Google apps script 项目/库物理(编辑访问)和逻辑(执行访问)范围
我已经阅读了一些基本的谷歌应用程序脚本文档/教程。我还没有找到任何关于代码执行“范围”的解释 以下是我到目前为止的理解:Google apps script 项目/库物理(编辑访问)和逻辑(执行访问)范围,google-apps-script,Google Apps Script,我已经阅读了一些基本的谷歌应用程序脚本文档/教程。我还没有找到任何关于代码执行“范围”的解释 以下是我到目前为止的理解: All code consists of one or more statements All statements must (?) be contained in a "function" (a slight different from non-google javascript? - is this a false assumption?) All
All code consists of one or more statements
All statements must (?) be contained in a "function"
(a slight different from non-google javascript? - is this a false assumption?)
All functions reside in a container called a "file"
Each "file" is part of a "project" container (or library)
Each project container is stored in a "spreadsheet" container.
这些是“物理”(编辑访问)边界
我的问题是语句的“逻辑”边界是什么在执行期间 我首先假设所有变量/对象都是全局的, 类似于JavaScript在网页中的操作方式。我不这么认为 “编辑访问”容器限制了变量/对象定义的范围。 我错了 我认为“库”结构类似于PHP的“包含”操作。 这样一来,我想我就不用再复制同一套文件了 在我需要的每个应用程序(电子表格容器)中编写代码 使用已经“测试”过的代码。我假设有足够的资源 包含的项目与包含的项目相同 项目共同资源)。总之,我错了。“属性”存储在定义电子表格中,并被视为包含项目的“所有” 通过玩它,我现在明白了“项目密钥”只是增加了 电子表格容器的新“命名空间”。每种情况下会发生什么 名称空间保留在该名称空间中。唯一(最简单)的沟通 名称空间之间通过函数参数和返回值进行连接 特别是,用户和项目属性的作用域为并保留在 它们包含电子表格文档。电子表格中的每个项目 文档有一组单独的用户和项目属性 相同的项目/库名称可以出现在多个电子表格文件中 而且是完全独立的 这有文件记录吗?还有其他事情我需要知道吗 关于作用域(来自不同应用程序的线程之间的通信) 是否共享同一项目/库 此外,如果函数将引用传递回 库范围,它是否会保留在调用的项目中?我可以通过/返回吗 指向项目的UserProperties“sevice”对象并具有访问权限的变量
在另一个项目中添加该数据?这一点在库中的用户指南结尾处有记录: 在决定如何确定范围时,我们试图认真考虑最常见的用例,并尽可能减少意外,但我们并不完美 关于您是否可以使用参数传递在库和项目之间共享ScriptProperties对象的问题,目前这是不可能的。您可以始终公开特定属性的getter/setter
如果您有一个有趣的用例,如果没有请求的行为就无法实现,请在我们的问题跟踪器中提交一个bug。谢谢!我也在努力解决这个问题。虽然文档非常好,但有点混乱 共享和非共享的概念花了我一点时间才得到 我想提到的是,UserProperties存在于用户级别,并且不仅仅与项目或库相关联。在使用库时,不需要像使用ScriptProperties那样传递UserProperties 周围都是整洁的东西:-)
吉姆古帕谢谢你的指点。我未能更详细地阅读文档。文档非常好。