我在2个不同的电子表格上测试了一个简单的脚本,第一个电子表格的执行时间不到1秒,第二个电子表格的执行时间不到7秒(即使它是相同的代码)。以下是2个电子表格中使用的代码,非常基本(只需在表格中检索一个值):
function testScript() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MY SHEET");
var range = sheet.getRange("A1");
var value = range.getValues();
}
我使用以下代码从菜单调用了这个函数:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('MY MENU')
.addItem('TEST', 'testScript')
.addToUi();
}
我在脚本文件中没有其他内容。
关于电子表格:
为什么2个电子表格的执行时间如此不同?他们之间的代码完全相同,而且我只处理空白的纸张" MY SHEET"。
非常感谢! :)
答案 0 :(得分:0)
我不确定能为此给出准确的答案,但关键因素是,当您拨打内置的Google服务时,Apps脚本会在幕后进行远程API调用,Google&#39 ;基础设施分布且复杂。
您对SpreadsheetApp功能的调用 - - getActiveSpreadsheet(),getSheetByName(),getRange(),getValues()都向Google服务发出网络请求,这需要时间并且受到各种条件的影响,就像任何其他网络请求一样。
每个完成这些操作所花费的时间差别很大,根据我的经验,他们从不到一秒钟到每秒约2秒钟,这从执行到执行各不相同。
至于为什么你的两份文件之间如此不同,很难说。可能会有一些关于表格本身的内容有影响,但我希望这是非常小的。
它更可能是基础设施本身的一个怪癖,而且它很可能是一个临时条件,导致一个文档的执行速度比另一个文档慢。
例如,这两个文件可以存储在完全不同的数据中心的完全不同的地方,并且一个站点的延迟量可能比另一个站点的延迟量多。对于像Google Drive这样的复杂分布式架构,还有许多其他方案可以解释差异。脚本本身是单独的文件,这些文件可以存储在工作表等不同的位置。