javascript - 执行时编写 Google Apps 脚本
问题描述
我正在使用 google 电子表格和 Apps Script 来收集一些财务数据,有一个功能需要一些时间,因为它需要处理大量信息。
正因为如此,谷歌向我展示了超过最大执行时间,但即使有一个 for 循环在每个循环中写入文件,它也不会在函数完成之前执行它。
有人可以告诉我如何在执行时编写电子表格吗?
谢谢。
在这里留下一个示例脚本。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var rangeSheet = activeSheet.getRange(1, 1, activeSheet.getLastRow() - 1, 1).getValues();
// after cleared out i have an array of values so i do:
rangeSheet.forEach(async (el, idx) => {
let result = await anotherFunction(el) // <--- this is the function taking around 2 minutes to complete
sheet.getRange(`$B${idx + 1}`).setValue(`${result}
})
}
解决方案
这会给你一些性能提升:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var rangeSheet = activeSheet.getRange(1, 1, activeSheet.getLastRow() - 1, 1).getValues();
var data = [];
rangeSheet.forEach(async (el, idx) => {
let result = await anotherFunction(el) // <--- this is the function taking around 2 minutes to complete
data.push([result]);
})
sheet.getRange(1,2,data.length,data[0].length).setValues(data);
}
阅读最佳实践了解更多信息。
但是,如果anotherFunction
花费太多时间,那么恐怕您需要重新设计逻辑。UrlfetchApp.fetchAll()
如果您想获取多个 URL,我建议您使用。
参考: