使用Google Big Query在Google App脚本上超过了最长执行时间

时间:2013-12-09 18:05:15

标签: sql google-apps-script google-bigquery

如何在下面的代码中延长执行时间。基本上,我使用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]);
 }
}

2 个答案:

答案 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分钟?