Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何提高谷歌文档应用程序脚本的速度_Javascript_Google Apps Script_Google Docs - Fatal编程技术网

Javascript 如何提高谷歌文档应用程序脚本的速度

Javascript 如何提高谷歌文档应用程序脚本的速度,javascript,google-apps-script,google-docs,Javascript,Google Apps Script,Google Docs,我有一个GoogleApps脚本,可以从电子表格中获取数据。我认为,由于数据量很大,数据的获取速度非常慢。此函数的第一次调用持续到第二次: sheet.getRange(row, coll).getValue() 我认为必须有足够的时间来创建全局变量,这些变量将在电子表格打开时始终可用。我会将整个电子表格存储在open上并访问它,这应该会快得多。但是我找不到这个选项。您可以使用:sheet.getDataRange().getValues()它将生成一个二维数组,包含工作表中直到最后一行和包含

我有一个GoogleApps脚本,可以从电子表格中获取数据。我认为,由于数据量很大,数据的获取速度非常慢。此函数的第一次调用持续到第二次:

sheet.getRange(row, coll).getValue()

我认为必须有足够的时间来创建全局变量,这些变量将在电子表格打开时始终可用。我会将整个电子表格存储在open上并访问它,这应该会快得多。但是我找不到这个选项。

您可以使用:
sheet.getDataRange().getValues()它将生成一个二维数组,包含工作表中直到最后一行和包含数据的列的所有值

例如,如果工作表的单元格A1:B10中包含数据,然后单元格E20中包含数据,则
.getDataRange()
方法将获取包括空单元格在内的A1:E20范围

然后可以使用循环或过滤器访问或修改阵列

没有更多的信息,也不知道你到底想实现什么,这是我能给你的最好方法


注意:将整个电子表格存储在onOpen()上不是一个好主意,因为除非您刷新或重新打开电子表格,否则将无法获取对电子表格所做的任何更改。

谢谢,但我不知道如何调用此函数一次,然后只使用数据而不访问我共享的API。单击菜单中的“自定义菜单”,然后单击“显示信息”(将请求授权),然后单击任意行。然后,通过几秒钟的延迟,侧栏中的信息将从查看代码
sheet更新。getRange(row,coll)。getValue()
不是您的问题。从我所看到的情况来看,您实际上多次提取数据,并执行其他一些操作,这些操作实际上没有为例如
Date做任何事情。现在()
在脚本中被调用24次,但实际上没有用于任何事情?再说一次,你能告诉我你想要实现什么吗?它是否像单击一列并向侧边栏输出值那样简单?我已经隐藏了该文件,但可以随时共享它。我要做的是减少延误。每次单击一行,都会有一秒钟的延迟。调用
getRange()
的次数无关紧要,因为只有第一个调用占用的时间最多。我使用了
Date.now()
来找出哪个函数花费的时间最多,因为
console.time()
对meRegardless不起作用。当命令发送到Google,处理服务器端并发送回边栏时,总是会有一秒左右的延迟,但我认为你的代码可以大大减少。您可以使用
函数sheetData()
获取工作表上的所有数据(这花费了最多的时间),但在
函数getMediaDataForRow(工作表,行)
中,您是否再次获取要在侧边栏中显示的值?