2021/10/03に更新

【GASで効率化】複数のシートを一括生成する

スプレッドシート小技

スプレッドシート内の1シートを、指定した名前でコピーするGoogle Apps Scriptです。シート名が重複した場合はスキップします。

こんな悩みを解決します


  • 1つのテンプレートシートを複数コピーする必要がある。
  • シート名は「〜のコピー」となってしまうので手作業で修正するのが大変。

用意するもの


  • コピー元になるテンプレートシート

このスクリプトで出来ること


  • 指定したシートを、指定した名前でコピーします。
  • もし存在するシート名を指定した場合は、処理がスキップされます。

使い方


1.コピー元になるシートを用意します。

適当な「コピー元シート」を作成しました。
このシートをGASにコピーしてもらいます。

2.スクリプトの実行

さっそくスクリプトを起動します。
メニューから「シート一括生成」を実行します。

生成したいシート名を聞かれます。
欲しいシートの数だけ、カンマ区切りで入力してください。
例では日付ですが、日本語でも大丈夫です。

続いて、コピー元のシートの名前を入力します。
この例では「コピー元シート」というシート名なので、それを入力します。

これでシートのコピーが実行されます。シートが増えていればOKです。

もし、すでに存在しているシート名を指定してしまっても大丈夫です。
このようにスキップしてくれます。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00006/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  var ui = SpreadsheetApp.getUi()

  // メニューの表示名
  var menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('シート一括生成', 'generate_sheet');

  // メニューを画面に追加する
  menu.addToUi();
}

function generate_sheet() {

  // 生成するシートの名前を入力させる
  const input_sheetname = Browser.inputBox('生成するシート名をカンマ区切りで入力してください', Browser.Buttons.OK_CANCEL);

  // 受け取った生成するシート名を配列にする
  const sheets_name = input_sheetname.split(',');

  // コピー元のシート名を入力させる
  const input_formatsheet = Browser.inputBox('コピー元のシート名を入力してください', Browser.Buttons.OK_CANCEL);

  // スプレッドシートを開く
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // 重複して作成しないために、すでに存在するシートを取得する
  let exist_sheets = spreadsheet.getSheets();

  // 入力されたシート名でループ
  inputsheetloop:for (i = 0; i < sheets_name.length; i++) {

    // すでに存在するシートでループし、重複チェック
    for(j = 0; j < exist_sheets.length; j++ ){
      if(sheets_name[i] == exist_sheets[j].getSheetName()){
        Browser.msgBox('シート名「' + sheets_name[i] + '」はすでに存在するためスキップします');
        continue inputsheetloop;
      }
    }
    
    // コピー元シートを取得
    let formatsheet = spreadsheet.getSheetByName(input_formatsheet);

    // コピー元からシートを複製する
    let copiedsheet = formatsheet.copyTo(spreadsheet);

    // 生成したシートの名前を変更する
    copiedsheet.setName(sheets_name[i]);
  }

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp