1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】copyToメソッドでシートをコピー・複製する基本から応用まで解説

【GAS】copyToメソッドでシートをコピー・複製する基本から応用まで解説

【GAS】copyToメソッドでシートをコピー・複製する基本から応用まで解説

Google Apps Script(GAS)でスプレッドシートを操作する際、copyTo()メソッドは非常に強力で便利な機能です。このメソッドを活用することで、シートの複製や別スプレッドシートへのデータコピーが簡単に行え、定型業務の自動化や効率化に大きく貢献します。

この記事では、copyTo()メソッドの基本的な使い方から、複数シートの一括コピー、エラー処理を組み込んだ応用テクニックまで、実用的なサンプルコードを交えて分かりやすく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

copyTo()メソッドの基本構文

はじめに、copyTo()メソッドの基本的な構文を確認しましょう。

// 指定したスプレッドシートにシートをコピーする
Sheet.copyTo(spreadsheet);

このメソッドは、Sheetオブジェクト(コピー元のシート)を、引数で指定したspreadsheetオブジェクト(コピー先のスプレッドシート)に複製します。コピー先のシートは新しく作成され、元のシートのデータや書式設定、保護範囲などもすべて引き継がれるため、テンプレートからのシート生成などに非常に便利です。

同じスプレッドシート内でシートを複製する

最も基本的な使い方として、現在開いているスプレッドシート内でシートを複製する例を見てみましょう。

function duplicateSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const templateSheet = ss.getSheetByName('テンプレート');

  // テンプレートシートを同じスプレッドシート内にコピー
  const newSheet = templateSheet.copyTo(ss);

  // 分かりやすいように新しいシートに名前を付ける
  const formattedDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
  newSheet.setName(`データ_${formattedDate}`);
}

このスクリプトを実行すると、「テンプレート」という名前のシートが複製され、「データ_(今日の日付)」という名前の新しいシートが作成されます。

応用的な使い方

基本的な使い方を理解したところで、より実用的な応用例をいくつか紹介します。

複数シートを一括でコピーする

複数のシートを一度にコピーしたい場合は、ループ処理を利用します。以下の関数は、シート名の配列を受け取り、指定したスプレッドシートに一括でコピーします。

function batchCopySheets(sheetNames, destinationSpreadsheet) {
  const sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  sheetNames.forEach((name, index) => {
    const sourceSheet = sourceSpreadsheet.getSheetByName(name);
    if (sourceSheet) {
      // コピーを実行
      const newSheet = sourceSheet.copyTo(destinationSpreadsheet);
      newSheet.setName(`${name}_COPY_${index + 1}`);
      
      // GASの実行時間制限を避けるため、適宜スリープを挟む
      if ((index + 1) % 5 === 0) {
        Utilities.sleep(1000); // 1秒待機
      }
    }
  });
}

大量のシートをコピーする際は、GASの実行時間制限(通常6分)に注意が必要です。Utilities.sleep()を挟むことで、サーバーへの負荷を軽減し、タイムアウトエラーを防ぐことができます。

エラーハンドリングを組み込んだ安全なコピー処理

実務でスクリプトを運用する際には、予期せぬエラーへの対策が不可欠です。「テンプレートシートが存在しなかった」「コピー先のシート名が重複していた」といったケースを想定し、try...catchブロックでエラーハンドリングを実装しましょう。

function safeCopySheet() {
  try {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const templateSheet = ss.getSheetByName('テンプレート');
    
    // テンプレートシートの存在チェック
    if (!templateSheet) {
      throw new Error('「テンプレート」シートが見つかりません。');
    }
    
    const newSheet = templateSheet.copyTo(ss);
    
    // 重複しないシート名を生成
    let sheetName = 'コピーシート';
    let counter = 1;
    while (ss.getSheetByName(sheetName)) {
      sheetName = `コピーシート_${counter}`;
      counter++;
    }
    newSheet.setName(sheetName);

  } catch (e) {
    // エラー内容をログに出力し、ユーザーに通知する
    console.error(`エラーが発生しました: ${e.message}`);
    SpreadsheetApp.getUi().alert(`処理に失敗しました: ${e.message}`);
  }
}

このように堅牢なエラー処理を実装することで、スクリプトが意図せず停止するのを防ぎ、安定した運用が可能になります。

まとめ

copyTo()メソッドは、GASにおけるスプレッドシート操作の基本でありながら、非常に奥の深い機能です。基本的な使い方をマスターするだけで作業効率は格段に向上し、応用テクニックを組み合わせることで、より複雑な業務プロセスの自動化も実現できます。

今回紹介したサンプルコードを参考に、ぜひご自身の業務改善にcopyTo()メソッドを活用してみてください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
【GAS】スプレッドシートのシートをコピーする|copyTo() | くろんの部屋

GAS(Google Apps Script)を用いて、スプレッドシートのシートをコピーしたい方向けに、『copyToメソッド』を紹介していきたいと思います。業務効率化・自動化で、シートをコピーするのは多用するので、活用していただけると嬉し

【GAS】別のスプレッドシートにコピー、値のみ、シート毎などまとめ【Google Apps Script】

スプレッドシートを別のシートにコピーするには、CopyToメソッドやgetValueとsetValueを使用して値をコピー&ペーストするなど様々な方法があります。この記事ではGASでスプレッドシートを別のスプレッドシートにコピーする

【GAS】CopyTo、行列コピー、スプレッドシートで自動コピーまとめ【Google Apps Script】

スプレッドシートのGASでCopyToを使用して行列コピーしたり、自動で別シートにコピーや値のみコピーなど、CopyToでできることをまとめて解説しています。複数行にコピーする時の範囲指定など、なるべくわかりやすく解説してみたいと思います。

GASでスプレッドシートのシートをコピーする方法(copyToメソッド) | AutoWorker〜Google Apps Script(GAS)とSikuliで始める業務改善入門

Google Apps Script(GAS)でスプレッドシートにあるシートをコピーする方法を解説します。 GASに用意されているcopyToメソッドを使い、スプレッドシート上のシ...

【コピペで使える】GASで任意のファイルをコピーしてみる

GASで任意のファイルをコピーしてみる 今回の投稿では、GASを使って任意のファイルをコピーするメソッドをご紹…

Google Apps Scriptでスプレッドシートのシートをコピーする方法

概要Google Apps Scriptでスプレッドシートのシートをコピー(複製)する方法です。使用するメソッド構文Sheetオブジェクト.copyTo(spreadsheet)引数パラメーター必須型説明spreadsheet○Spread...

Googleドライブのフォルダを一括コピー!GASで実現する自動化手順 – 俺が最強エンジニア

GoogleDrive内のフォルダはドラッグ・アンド・ドロップや切り取り+貼り付けで簡単に移動できますが、コピーは制限がかかっているため、まとめて複製を行うことができません。

[GAS]このセル範囲の移動・コピー・削除を行う方法 -Rangeクラス-|テックアップライフ

Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明します。 Range

関連記事

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

Google Apps Script (GAS) を使ってスプレッドシートを自動化する際、セルの**「テキスト折り返し設定」をプログラムで自在に制御する**ことは、データの視認性を高め、プロフェッショナルなシートレイアウトを維持するために不可欠です。本記事では、GASの主要メソッドであるgetWrap()getWraps()に焦点を当て、その基本的な使い方からSEOを意識した応用テクニックまで、徹底的に解説します。

この記事では、以下の疑問を解決します。