我有多个应用程序脚本/工作表,它们使用相同的值,我希望创建一个地方,将所有变量存储为一个全局设置页(工作表名称/范围/字体设置/要排序的列,等等),并为每个页面从它们中读取应用脚本。
如果我这样做,我会有严重的性能下降吗?工作表的每一个编辑都会触发一个函数。我不确定每次运行函数时,它是否会尝试获取所有的值(不确定它是否会在其服务器上的缓存中保留未更改的页面)。
有关这方面的更多信息:
我将有许多人设置他们自己的所有网页副本,并希望使它尽可能容易,只给他们一张纸来查看和编辑整个系统。
示例:
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 |
谢谢
发布于 2016-09-18 07:14:52
这取决于需要访问这些集中设置的频率。如果它是每个用户会话一次,那么我怀疑它是否会被察觉到。可以使用缓存服务在函数运行之间存储值。一个全局变量会丢失它的值和每个堆栈完成过程的结束。您可能希望在每个用户会话中检索一次值,并使这些值持续存在并在一定时间内可访问。您可以使用缓存服务来完成这一任务。缓存服务“超时”。当时间耗尽时,设置和值就不再存在。
每个电子表格中的脚本可以从中央表中获取值,然后将值放入电子表格的缓存中。那么,您真的不需要担心这种情况下的性能问题。您的代码应该检查Cache中的值,如果不存在,则再次从中央电子表格中检索它。设置缓存时间,不管您认为一个典型的用户会话会持续多久。
https://stackoverflow.com/questions/39549256
复制相似问题