Google文档指出PropertiesServices.getScriptProperties()
的作用域是Script。
然而,我有一个工作例子似乎与此相矛盾。
我有一个项目,里面有三个脚本(选项卡);最后运行时间";在CCD_ 2中。如果这些CCD_ 3的范围真的是";每个脚本";那么我希望能够为每个脚本(选项卡)存储不同的值。
但我发现,每次执行一个脚本(选项卡)时,它都会覆盖"的值;最后运行时间";由其他脚本(选项卡)保存的。
这似乎表明ScriptProperties
的作用域实际上是每个项目,而不是每个脚本。
有人能证实这一点吗,或者告诉我我误解了什么?
(我已经在谷歌文档页面上留下了反馈)
是的,ScriptProperties对整个脚本项目是通用的。项目中文件的概念纯粹是为了组织方便;文件";在单个谷歌应用程序脚本"中;项目";表示一个";脚本"。
通常,如果我需要跟踪多个上次执行时间值,我会为每个值设置一个唯一的属性:
Action1_LastExecuteTime
Action2_LastExecuteTime
等等。。
另一个例子是脚本授权,当用户授权一个范围时,它处于项目级别,该授权适用于项目中的任何代码。
前言
作用域和脚本(或项目)之间有一个重要区别。
属性
PropertiesService
将作用域的资源访问到特定的访问级别,每个资源都确定在不同的执行上下文(独立的,绑定到文档或Web应用程序)中将共享和不共享。有3个访问级别具有不同的作用域:
- 脚本-所有用户都可以使用,可以说是全局范围
- 文档-所有用户都可以使用,但仅限于当前(容器)文档
- 用户-仅限于运行脚本的用户
项目
应用程序脚本项目具有定义明确且一致的含义,引用文档:
脚本项目表示Google Apps脚本中的文件和资源集合
请注意,脚本项目不仅仅是其文件的总和,它还有资源的概念。目前有3组资源可以与应用程序脚本项目关联:
- 库-充当模块的替身
- 云平台项目-控制配额、权限和访问
- 高级谷歌服务-围绕相应REST API的精简包装器
这如何回答这个问题
尽管CCD_ 6方法处理";脚本";它所做的范围如此之大,以至于所表示的资源(属性存储)将在脚本的执行上下文中的任何地方都可以访问(前提是可访问,ofc),而不是项目,因为它所代表的不止于此。
当多个项目共享库的ScriptProperties
(如果它公开了它们)时,库带来的复杂性使差异变得更加明显,但每个都有自己的实例。
的确,术语表指出脚本项目是";有时简称为";脚本"但它并没有说,每当你遇到术语";脚本";你可以用";项目";,反之亦然。
整体结构可视化:
+----------------------------------+|项目||+-------------------------------+|||脚本||||+-------------------------+|||||.gs文件|||||+-------------------------+||||+-------------------------+|||||.html文件|||||+-------------------------+||||+-------------------------+||||| appsscript.json清单|||||+-------------------------+|||+-------------------------------+||+-------------------------------+|||资源||||+-------------------------+|||||库|||||+-------------------------+||||+-------------------------+|||||云平台项目|||||+-------------------------+||||+-------------------------+|||||高级谷歌服务|||||+-------------------------+|||+-------------------------------+||+-------------------------------+|||属性||||+-------------------------+|||||脚本属性|||||+-------------------------+||||+-------------------------+|||||文档属性|||||+-------------------------+|||||用户属性|||||+-------------------------+|||+-------------------------------+|+----------------------------------+