0

毎日実行されるアドワーズ スクリプトを使用して、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 スクリプトでできるかどうかがわかりません。

私が考えていた唯一の他のことは、毎回新しい行を一番下に挿入し、行番号を見つけてから、行番号に基づいてデータを挿入することでした。

私が持っていたものは 3 日前に完全に機能していましたが、今は停止しました。

提案やアイデアはありますか?

4

2 に答える 2

2

1) appendRow を使用しないでください。getRange setValues を使用して一度にすべての行を書き込み、sheet.getLastRow を使用して開始行を計算すると、はるかに高速で効率的になります。

2) appendRow を使用すると、最後の空でない行に追加されるため、正常に動作し、自動挿入された空白行を超えて書き込みを行うべきではありません。ただし、配列式のようなものや、一番下の空の行に書き込まれている列全体で動作する何かがあるかもしれません。空白の値を書き込んでも、それらの行は空と見なされないため、次の appendRow はそれらの下に書き込みます。

于 2013-10-10T15:10:22.733 に答える
0

何かはおそらく、配列を30行に設定し、配列を空にするだけで、サイズ変更された新しい配列を作成しない呼び出しの1つです。

しかし、#1は行く方法です...

于 2014-06-16T18:54:16.067 に答える