我有一个脚本,曾经在一分钟内运行良好。最近我开始得到超过最长执行时间"错误表明它现在打破了6分钟的限制。
使用'执行记录'我发现我做的少量getValue()和getValues()调用需要很长时间,所以我进行了实验。
以下测试功能需要3到7秒才能执行:
function test_singleCellRange_getValue() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Marcin');
var range = sheet.getRange(1, 1);
var value = range.getValue();
}
'执行记录'表明getValue()
调用一直占用:
[17-10-29 14:15:00:002 EDT] Starting execution
[17-10-29 14:15:00:019 EDT] SpreadsheetApp.getActive() [0 seconds]
[17-10-29 14:15:00:074 EDT] Spreadsheet.getSheetByName([Marcin]) [0.054 seconds]
[17-10-29 14:15:00:075 EDT] Sheet.getRange([1, 1]) [0 seconds]
[17-10-29 14:15:07:377 EDT] Range.getValue() [7.301 seconds]
[17-10-29 14:15:07:381 EDT] Execution succeeded [7.36 seconds total runtime]
单个单元格包含常量字符串值(即没有公式)。 getValue()的这种令人沮丧的表现是否正常(即Google服务器所期望的新性能标准),还是我可以采取哪些措施来提高性能?
getValue()
的效果似乎受到电子表格大小的严重影响。即使上述代码在单个单元格范围内执行getValue()
,其性能似乎也会受到电子表格整体大小的影响。
这没有任何意义 - 任何人都有经验吗?这是Google设计API的方式还是这个错误?
答案 0 :(得分:1)
如何使用Sheets API v4?请将此视为几个答案之一。当我在Spreadsheet中处理大数据时,由于处理速度的原因,我经常使用Sheets API。我不知道这个示例脚本是否对您的情况有用。如果这对你没用,我很抱歉。
此示例脚本可以使用您的脚本检索相同的结果。
var sheetId = "### Spreadsheet ID ###";
var range = "Sheet1!A1:A1";
var value = Sheets.Spreadsheets.Values.get(sheetId, range);
// Logger.log(value.values)
要使用此脚本,请按以下步骤启用Sheets API for Advanced Google Services和API控制台。
答案 1 :(得分:0)