0

我正在尝试通过每天运行的 adwords 脚本将行添加到谷歌电子表格中。

到目前为止的一些代码是:

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 行......有什么办法可以阻止这种情况。我看过使用提要列表,但我不知道该怎么做,或者你是否可以使用 adwords 脚本。

我唯一想到的另一件事是每次在底部插入一个新行,找到行号,然后根据行号插入数据。

我在 3 天前工作得很好,但现在它刚刚停止了。

有什么建议或想法吗?

4

2 回答 2

2

1)你不应该使用appendRow。如果您使用 getRange setValues 一次写入所有行并使用 sheet.getLastRow 计算起始行,将会更快更高效。

2)如果您确实使用了 appendRow,它将附加到最后一个非空行,因此它应该可以正常工作并且不应该超出自动插入的空白行。但是,也许您有类似 arrayformula 之类的东西或其他东西在写在底部的那些空行中的整个列上进行操作。即使它写入空白值,这些行也不会被视为空,因此下一个 appendRow 将写入它们下方。

于 2013-10-10T15:10:22.733 回答
0

这可能是将数组设置为 30 行的调用之一,然后只清空数组,但不创建新的调整大小的数组。

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

于 2014-06-16T18:54:16.067 回答