0

スクリプトの問題の解決策を見つけるために、さまざまなフォーラムとスタックオーバーフローを閲覧してきました。説明させてください:

それぞれ 1 つのシートを含む 2 つの異なるスプレッドシートがあります。「Spreadsheet1 - Sheet 1」のデータを「Spreadsheet2 - Data」に集約したい。私の論理は、Spreadsheet1 のデータが Spreadsheet2 にコピーされるというものでした (これは完全に機能します)。ただし、Spreadsheet1 で見つかったデータをスクリプトで削除することも必要であり、そこでブロックされています。メソッド「deleteRows()」を使用しようとしていますが、これは正しく機能していないようです。

これが私のスクリプトです:

function Consolidate() {
   var source = SpreadsheetApp.openById('Spreadsheet1_unique_id');
   var sourcesheet = source.getSheetByName('Sheet1');

   var target = SpreadsheetApp.openById('Spreadsheet2_unique_id')
   var targetsheet = target.getSheetByName('Data');
   var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
   var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
   targetrange.setValues(rangeValues);
   sourcesheet.deleteRows(2, sourcesheet.getLastRow());
}

私の Google Apps Script を使用したデバッグ機能は、「これらの行は範囲外です」と示しています。この場合、それはどういう意味ですか?

調べてみると、 deleteRows()内で定義した 2 番目のパラメーターは行の範囲ではなく、1 行だけを表していることがわかりました。正しいものを手に入れる方法を見つけようとしたことを知っています。ただし、すべての試みは、機能しないスクリプトによって終了しました。私はそれを正しく理解しましたか、それとも単に間違っていますか?

誰かが期待される結果に到達する方法について考えを持っていますか?

助けてくれてどうもありがとう!

4

1 に答える 1