我有多个使用相同值的应用脚本/工作表,我想创建一个地方将所有变量存储为一个全局设置页面(工作表名称/范围/字体设置/列进行排序等)表格,并为每个页面读取应用程序脚本。
如果我这样做会导致性能下降吗?每次编辑工作表都会触发一个功能。我不确定它是否会在每次运行函数时尝试获取所有值(不确定它是否会保留其服务器上缓存中未更改的页面)
有关此内容的更多信息:
我将让很多人设置他们自己的所有页面的副本,并希望通过只给他们一张表来查看和编辑整个系统,使其尽可能简单。
示例:
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 |
由于
答案 0 :(得分:0)
这取决于需要访问这些集中设置的频率。如果它是每个用户会话一次,那么我怀疑它会被察觉。您可以使用缓存服务在函数运行之间存储值。全局变量会丢失它的值和每个堆栈完成的结束。您可能希望每个用户会话检索一次值,并使这些值保持不变并且可以访问一段时间。您可以使用缓存服务执行此操作。缓存服务“超时”。当时间用完时,设置和值就不复存在了。
每个电子表格中的脚本都可以从中央工作表中获取值,然后将值放入该电子表格的缓存中。那么你真的不需要担心这种情况下的性能问题。您的代码应检查Cache中的值,如果不存在,请再次从中央电子表格中检索它。设置缓存时间,无论您认为典型的用户会话将持续多长时间。