概要
Google Apps Scriptで、リストにある名前で、スプレッドシートを一括で複製する方法を行いたいと思います。
前準備
複製元のフォーマットファイルの準備
まずは複製元になるフォーマットファイルを準備します。
リストの作成
次にフォーマットを複製するリストのファイルを準備します。
準備をしたスプレッドシートの「リスト」の中に以下のようなリストを作成します。
シート名は「list」とします。
ソースコード
スクリプトエディタを開く
リストのスクリプトエディタを開きます。
ソースコード
以下のソースコードをスクリプトエディターに貼り付けてください。
/**
* スプレッドシートを一括複製
*/
function bulk_copy() {
/**
* 実行する前に、以下のIDを設定
*/
// フォーマットファイルのID
const FORMAT_FILE_ID = PropertiesService.getScriptProperties().getProperty("FORMAT_FILE_ID");
// ------------------------------------------------------------------------
// アクティブなスプレッドシートを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// カレントディレクトリ
const current_dir = DriveApp.getFileById(spreadsheet.getId()).getParents().next();
// ------------------------------------------------------------------------
/**
* listの情報を取得
*/
// listシートを取得
const name_list_sheet = spreadsheet.getSheetByName("list");
// listシートの最終行を取得
const max_row = name_list_sheet.getLastRow();
// listを取得(A2〜最終行まで)
const name_list = name_list_sheet.getRange(2, 1, max_row - 1).getValues();
// ------------------------------------------------------------------------
/**
* 出力フォルダの作成
*/
// 出力フォルダ名(年月日時分秒)
const output_folder_name = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
// 出力フォルダの作成
const output_folder = DriveApp.getFolderById(current_dir.getId()).createFolder(output_folder_name);
// 出力先フォルダ
const output_dir = DriveApp.getFolderById(output_folder.getId());
// ------------------------------------------------------------------------
/**
* フォーマットファイルの情報
*/
// フォーマットファイル
const format_file = DriveApp.getFileById(FORMAT_FILE_ID);
// ------------------------------------------------------------------------
/**
* ファイルの複製の作成(繰り返し処理)
*/
// listの件数分繰り返し
for (let i = 0; i < name_list.length; i++) {
// 名前を取得 (名前をそのままファイル名にする)
let name = name_list[i];
// 名前が空の場合は次へ
if (name == "") continue;
// フォーマットファイルをコピーしてファイルを作成する
let newFile = format_file.makeCopy(name.toString(), output_dir);
// シート名の隣の列(B列)にリンクを作成
name_list_sheet.getRange(i + 2, 2).setValue('=HYPERLINK("' + newFile.getUrl() + '", "リンク")');
}
}
実行方法
プロパティの設定
- 「フォーマット」のスプレッドシートIDを確認します。
- 確認したスプレッドシートIDをプロパティに「FORMAT_FILE_ID」というキーで設定します。
実行
メニューで「bulk_copy」が選択されていることを確認して、「実行」をクリックします。
複製されたファイルの確認
実行をしたら、「リスト」があるフォルダに「年月日時分秒(yyyyMMddHHmmss)」の名前のフォルダが作成されます。
作成されたフォルダの中に一括複製されたファイルが、リストの名前で作成されます。
リストの横には一括作成したファイルへのリンクも作成されていることが確認できます。