Google Apps Script で ある Sheet の値を別の Sheet に全てコピーする方法を調べてみました。
幾つか方法がありましたので、実現方法を記載します。
duplicateActiveSheet で Sheet を複製する
値をコピーするというか、Sheet を duplicateActiveSheet で複製して、リネームする方法です。
duplicateActiveSheet を実行する前に、コピー対象の Sheet を activate でアクティブ化しています。
// コピーするシートが存在する場合は削除する。
var dist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dist");
if (dist != null) {
SpreadsheetApp.getActiveSpreadsheet().deleteSheet(dist);
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("orig");
// シートをアクティブ化
sheet.activate();
// duplicateActiveSheet でコピーして、setName でリネーム。
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName("dist");
コピー元から、getDataRange().getValues() で全ての値を取得し、setValues() で値をコピーする
getDataRange を使って、コピー元から値を取り出し、コピーする方法です。
シートがある分、duplicateActiveSheet を使用するよりも高速に動作します。
// シート上でデータ値を持つセル範囲のすべてから値を取得する
var origRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("orig").getDataRange();
var values = origRange.getValues();
var dist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dist");
dist.getDataRange().setValues(values);
getLastRow、getLastColumn を使って範囲指定してコピーする
getLastRow、getLastColumn を使用して範囲指定して値を取り出し、setValue する方法です。
以下、記事に記載があります。
以上です。
コメント