データスクリプトのコピーが機能しなくなった
Nov 25 2020
私はここで見つけたグーグルシートのスクリプトを使用しています:
Google App Scriptで1つのシートから別のシートにデータをコピーし、行を追加します。1つの小さな問題です。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("Copy");
var pasteSheet = ss.getSheetByName("Paste");
// get source range
var source = copySheet.getRange(2,2,12,2);
// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);
// copy values to destination range
source.copyTo(destination);
// clear source values
source.clearContent();
}
私が今それを実行しているとき、それは私にエラーを与えます:
ターゲット範囲の座標がシートの寸法の外側にあります。
以前は登場していませんでした。なぜそれがこれをしているのか誰かが知っていますか?
回答
1 Marios Nov 25 2020 at 18:31
問題:
エラーは次の行にあります:
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);
pasteSheet.getLastRow()
シートの一番下にある行番号を返します。次に、12
行の範囲を検討しますが、コンテンツを含む最後の行の後に行がありpasteSheet
ません。12
ソリューション:
pasteSheet
:に行を追加します

または、insertRowsAfterを使用できます:
pasteSheet.insertRowsAfter(pasteSheet.getLastRow(), 12)
コードスニペット:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("Copy");
var pasteSheet = ss.getSheetByName("Paste");
// get source range
var source = copySheet.getRange(2,2,12,2);
// insert rows to make sure you have enough space
pasteSheet.insertRowsAfter(pasteSheet.getLastRow(), 12)
// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);
// copy values to destination range
source.copyTo(destination);
// clear source values
source.clearContent();
}