如何在下面的代码中延长执行时间。基本上,我使用Google App脚本从我们的大查询数据库中查询数据,并将数据导出到Google电子表格。
以下是我的代码:
function Weekly_Metric(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = "Budget";
var sheet = ss.getSheetByName(sheetName);
ss.setActiveSheet(sheet);
var sql = ' bigqueryscript ';
var results = GSReport.runQueryAsync(sql);
var resultsValues = GSReport.parseBigQueryAPIResponse(results);
sheet.clear();
ss.appendRow(["Label1", "Label2", "Label3"]);
for ( var i = 0 ; i < resultsValues.length ; i++ ) {
ss.appendRow(resultsValues[i]);
}
}
答案 0 :(得分:2)
尽可能减少对Google Apps脚本服务的调用次数。
在这种情况下,包含appendRow()
的循环可以替换为javascript数组操作和单个setValues()
调用。
...
sheet.clear();
var data = [];
data.push(["Label1", "Label2", "Label3"]);
for ( var i = 0 ; i < resultsValues.length ; i++ ) {
data.push(resultsValues[i]);
}
ss.getRange(1,1,data.length,data[0].length).setValues(data);
...
或者,如果resultsValues
已经是行数组,则只需添加标签:
...
sheet.clear();
resultsValues.unshift(["Label1", "Label2", "Label3"]);
ss.getRange(1,1,resultsValues.length,resultsValues[0].length).setValues(resultsValues);
...
如果这不起作用,那么你应该看看你的GSReport对象的方法。
答案 1 :(得分:0)
这篇文章对于如何在AppsScripts中运行超过5分钟的异步调用有一个很好的答案:
Exceeded maximum execution time in Google Apps Script
我想知道为什么对BigQuery的这个调用花了超过5分钟?