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 する方法です。
以下、記事に記載があります。

以上です。

コメント

カテゴリー