2013-10-10 98 views
0

我想通過每日運行的adwords腳本將行添加到谷歌電子表格。在adwords腳本sheet.appendrow追加太多行

某些代碼到目前爲止是:

var report_iter = AdWordsApp.report(
    'SELECT ' + columns_str + 
    'FROM ACCOUNT_PERFORMANCE_REPORT ' + 
    'DURING YESTERDAY', { apiVersion: 'v201302' } 
).rows(); 

while(report_iter.hasNext()) { 
    var row = report_iter.next(); 
    var row_array = [""]; // This is deliberate to include an empty cell in column A in the spreadsheet. 
    for(var i in columns) { 
    row_array.push(row[columns[i]]); 
    } 
    sheet.appendRow(row_array); // I think this line might be the problem 
} 

它工作正常,但是,它有一些不想要的結果也是如此。我想停止的是每當我在電子表格的底部追加一行時,它也會追加50個其他行的空白單元格。然後,下一次我追加一行時,它會將它追加到電子表格的底部,在之前的50行之後...是否有任何方法可以阻止此行。我看了一下使用Feed列表,但我不知道該怎麼做,或者如果您可以使用AdWords腳本。

我唯一想到的其他事情是每次在底部插入新行,找到行號,然後根據行號插入數據。

我3天前完美的工作,但現在它剛剛停止。

任何意見或建議?

+1

標記爲谷歌應用程序腳本? – eddyparkinson

+0

您是否檢查過「查看>執行記錄」以查看您是否多次調用'appendRow'?如果不是這樣,請發佈整個代碼,以便我們可以嘗試重現它(包括全局變量)。 –

回答

2

1)你不應該使用appendRow。如果使用getRange setValues一次性編寫所有行並使用sheet.getLastRow來計算起始行,則會更快更高效。 2)如果使用appendRow,它會追加到最後一個非空行,所以它應該可以正常工作,並且不應該寫入自動插入的空白行。但是,也許你有一些像arrayformula或其他操作在整個列上寫下底部空行的東西。即使它寫入空白值,這些行也不會被視爲空,所以下一個appendRow將寫入它們下面。

+0

完美。第2點是問題所在。我用1做了!謝謝! – falky

0

可能是將數組設置爲30行的調用之一,然後只清空數組,但不創建新的調整大小。

但是#1是要走的路...