将所有变量放在Google Sheet的多页表脚本中是否可行?

时间:2016-09-17 16:42:07

标签: google-apps-script google-sheets-api

我有多个使用相同值的应用脚本/工作表,我想创建一个地方将所有变量存储为一个全局设置页面(工作表名称/范围/字体设置/列进行排序等)表格,并为每个页面读取应用程序脚本。

如果我这样做会导致性能下降吗?每次编辑工作表都会触发一个功能。我不确定它是否会在每次运行函数时尝试获取所有值(不确定它是否会保留其服务器上缓存中未更改的页面)

有关此内容的更多信息:

  • 我有7个页面需要从1 Google表格中读取
  • 每个页面都有大约20个变量,其中6个变量相同 片

我将让很多人设置他们自己的所有页面的副本,并希望通过只给他们一张表来查看和编辑整个系统,使其尽可能简单。

示例:

  var sheetName1 = "Purchases";
  var sheetRange1 = "A3:N";
  var font= "Roboto";
  var font color= "#434343";
  var font size= 12;

会改为

  var sheetName1 = SettingsPageCell1;
  var sheetRange1 = SettingsPageCell2;
  var font= SettingsPageCell3;
  var font color= SettingsPageCell4";
  var font size= SettingsPageCell5;

获取单元格的脚本示例。我不确定这是否会最终导致大的延迟。

  var ssa = SpreadsheetApp.openByUrl('spreadsheet_url');
  var targetSheet = ssa.getSheetByName("Stylesheet");
  var test = targetSheet.getRange("B4").getValue();

设置Google表格页面

|--------------------------------|
|           Settings Page        |
|--------------------------------|
| Page 1 sheet name: | Purchases |
| Page 1 range       | A3:N      |
| Page font          | Roboto    |
| Font color         | #434343   |
| font size          | 12        |

由于

1 个答案:

答案 0 :(得分:0)

这取决于需要访问这些集中设置的频率。如果它是每个用户会话一次,那么我怀疑它会被察觉。您可以使用缓存服务在函数运行之间存储值。全局变量会丢失它的值和每个堆栈完成的结束。您可能希望每个用户会话检索一次值,并使这些值保持不变并且可以访问一段时间。您可以使用缓存服务执行此操作。缓存服务“超时”。当时间用完时,设置和值就不复存在了。

每个电子表格中的脚本都可以从中央工作表中获取值,然后将值放入该电子表格的缓存中。那么你真的不需要担心这种情况下的性能问题。您的代码应检查Cache中的值,如果不存在,请再次从中央电子表格中检索它。设置缓存时间,无论您认为典型的用户会话将持续多长时间。