Google应用脚本:如何在不同的函数调用之间保存电子表格中的数据?

net*_*tos 3 javascript google-apps google-sheets google-apps-script

在使用脚本编辑器的Google电子表格中,我进行函数调用,但我不太确定存储持久数据(我将继续使用的数据)的最佳方法是使用全局变量(使用对象,数组,字符串) ,或者有更好的方法来存储数据.

我不想使用可能是另一种方式的细胞.

另一个问题是,是否可以在此环境中创建(伪)类?最好的办法?

Kyl*_*Mit 9

双方ScriptPropertiesScriptDB已被弃用.

相反,您应该使用新类PropertiesService,该类分为缩小范围的三个部分:

  • 文档 -获取一个属性存储所有用户都可以在当前文档中访问,如果脚本已作为一个附加组件.
  • 脚本 - 获取所有用户都可以访问的属性存储,但仅限于此脚本.
  • User - 获取仅当前用户可以访问的属性存储,并且仅在此脚本中.

这是一个跨越调用持久化用户属性的示例:

var properties = PropertiesService.getScriptProperties();

function saveValue(lastDate) {
  properties.setProperty('lastCalled', lastDate);
}

function getValue() {
  return properties.getProperty('lastCalled');
}
Run Code Online (Sandbox Code Playgroud)

脚本执行环境是无状态的,所以你不能从之前的运行访问本地变量,但是你可以存储getScriptProperties()在一个局部变量,因为它会重新运行每个回程到服务器,以便它可以在任一方法被调用.


如果您需要更临时存储某些内容,可以使用CacheServiceAPI


Sca*_*ael 4

可以使用 ScriptProperties 类来存储持久数据:

http://code.google.com/googleapps/appsscript/class_scriptproperties.html

所有值都存储为字符串,并且在检索它们时必须使用 like 或 parsInt 或 parseFloat 转换回来。

JSON对象也可以通过这种方式存储。

  • ScriptDB 已于 2014 年 5 月 15 日弃用,并将于 2014 年 11 月 20 日关闭。要将数据移至其他类型的数据库,请参阅从 ScriptDB 迁移指南。https://developers.google.com/apps-script/reference/script-db/ (4认同)