adwords脚本中的sheet.appendrow附加了太多行

问题描述 投票:0回答:3

我正在尝试通过每天运行的adwords脚本向Google电子表格添加行。

到目前为止,某些代码是:

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脚本。

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

[我三天前的工作状况很好,但是现在它已经停止了。

有什么建议或想法吗?

google-apps-script google-sheets google-adwords
3个回答
2
投票

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

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


0
投票

该内容可能是将数组设置为30行的调用之一,然后仅清空该数组,但未创建新的调整大小的数组。

但是#1是必经之路...


0
投票

我可以请你回答一号吗?我使用arrayFormula获取工作表中的行号。例如,如果工作表有5行数据,另外995行空间。但是函数sheet.getLastRow将返回1000。如果我只想获取真实的行号5,该怎么办?

ps。抱歉,我不能只在您的回答中评论信誉欠佳...

© www.soinside.com 2019 - 2024. All rights reserved.