2013-12-09 24 views
0

如何在下面的代碼中延長執行時間。實質上,我使用Google App腳本查詢來自我們的大型查詢數據庫的數據並將數據導出到Google電子表格中。Google Big Query在Google App腳本上的執行時間超出了

以下是我的代碼:

功能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

總是減少調用谷歌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對象方法。

0

這篇文章對如何在需要超過5分鐘AppsScripts運行的異步調用一個很好的答案:

Exceeded maximum execution time in Google Apps Script

什麼我不知道就是爲什麼這個呼叫BigQuery是服用超過5分鐘?

+0

很明顯,這不是對BigQuery的調用需要時間......它是循環中的電子表格調用。見另一個答案。 –

相關問題