広告

GASでフォルダ100個を一括作成!初心者でも階層指定も任意のシートもサクッと作れる3ステップ

2024年5月3日

GoogleDriveにGASで100個数のフォルダを一括作成する方法を紹介します。

すぐにGASを確認する↓

本記事のポイントとして

  • スプレッドシートに記載したテキストを参照してフォルダを作成
  • マスタシートを100個のフォルダすべてに格納する

上記環境を実現します。

OYAKUN
OYAKUN

意外と使う機会があったので備忘録っす

GASでフォルダ100個を一括作成するソースコード

GASでフォルダ100個を一括作成するコードは以下のとおり。

function createFolder01(sheetName, parentFolderUrl) {
// scriptを実行するスプレッドシートを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = "シート1";
const sheet = spreadsheet.getSheetByName(sheetName);
// 列Aの値を取得
const values = sheet.getDataRange().getValues();
// フォルダを生成・格納するフォルダURLを取得
var parentFolderUrl = "フォルダ作成先のフォルダURL";
// 作成したフォルダに格納するシート情報を取得
const sheetToCopy = SpreadsheetApp.openByUrl('作成フォルダに格納したいシートURL');
// 繰り返し処理
for (let i = 0; i < values.length; i++) {
const textValue = values[i][0]; // A列のセル値を取得
const checkboxValue = values[i][1]; // B列のセル値を取得 (チェックボックスの場合、true/falseで判定)
if (checkboxValue === false) { // B列のチェックボックスがオフの場合
if (textValue !== "") { // A列のセル値が空でない場合
const parentFolderId = parentFolderUrl.split('/folders/')[1]; // 親フォルダIDを取得
const parentFolder = DriveApp.getFolderById(parentFolderId); // 親フォルダを取得
const folderName = textValue; // A列のセル値をフォルダ名に設定
// 新しいフォルダを作成
const newFolder = parentFolder.createFolder(folderName);
// 格納するシートをコピーして作成したフォルダへ格納
const newSheet = sheetToCopy.copy(folderName+"_テンプレ");
DriveApp.getFileById(newSheet.getId()).moveTo(newFolder);
// フォルダ作成成功の場合、B列のチェックボックスをオンに設定
sheet.getRange(i + 1, 2).setValue(true); // B列のチェックボックスをオンに設定
}
}
}
}

任意のスプレッドシート > 拡張機能 > Apps Script に貼付けてください。(コンテナバインドスクリプト)

今回は次章で紹介する「フォルダ名管理シート」(フォルダ100個生成と同階層のシート)に上記GASを実装しました。

GASで100個のフォルダを作成する3ステップ

上記ソースコードに至るまでの3ステップは以下のとおり。

  • フォルダ名を管理するシートを作成する
  • 親フォルダURLとマスタシートURLを取得
  • 変数の該当箇所にURLを設置してスクリプト実行

ステップ1. フォルダ名を管理するシートを作成する

フォルダ名称を管理するスプレッドシートを準備します。

  • A列にフォルダ名称
  • B列にチェックボックス

上記を100行分準備します。

おまけ. 100行分フォルダ名称を一括作成するGAS

フォルダ名の管理シートにテキスト記入するのが面倒な方は、

  • 任意のスプレッドシートを新規作成後
  • 下記scriptをコピペ・実行することで

100行分、A列にフォルダ名・B列にチェックボックスが記載されます。(シートのファイル名称は任意で付与してください)

function createFoldersAndCheckboxes() {
// シートを取得
var sheet = SpreadsheetApp.getActiveSheet();
// 100行分のデータを作成
var data = [];
for (var i = 0; i < 100; i++) {
data.push(["フォルダ" + (i + 1)]);
}
// A列に一括書き込み
sheet.getRange("A1:A100").setValues(data);
// B列に一括チェックボックス挿入
var rangeB = sheet.getRange("B1:B100");
rangeB.insertCheckboxes();
}

上記scriptをコピーして、シートの「拡張機能」→「Apps Script」をクリック

以下箇所に貼り付けて、

「実行」することで

フォルダ名の管理シートを作成することができます。

フォルダ名管理シートのURLを取得しておく

フォルダ名の管理シートを作成したら、

  • URLをコピーして
  • テキストエディタ(メモ帳など)に貼り付けして

どっかに保管しておきます。

コピー箇所の画像イメージ↓

ステップ2:親フォルダURLとマスタシートURLを取得

次にフォルダ100個を作成する先の

  • GoogleドライブのURL
  • 格納するシートURL

といった上記2つのURLを取得して保管しておきます。

親フォルダURLを取得する

GoogleDriveにアクセスして、フォルダ100個を作成するフォルダのURLを取得しておきます。

例えばGoogleDriveの画像だとここ↓

テキスト例だとこんな感じ↓

https://drive.google.com/drive/folders/1234567890abcdef?id=1234567890abcdef

マスターシートURLを取得する

フォルダ100個に格納するマスターシートのURLを取得しておきます。

今回マスターシートは、フォルダ100個生成場所と同じ階層に作成しました。

ステップ3:変数にURLを設置してスクリプト実行

以下変数を、いままで取得したURLに置き換えます。

変数置換内容
const sheetName = "シート1"; "シート1" を 対象シート名に置き換えます。
const parentFolderUrl = "フォルダ作成先のフォルダURL"; "フォルダ作成先のフォルダURL" を 対象URLに置き換えます。
const sheetToCopy = SpreadsheetApp.openByUrl('作成フォルダに格納したいシートURL'); "作成フォルダに格納したいシートURL" を 対象URLに置き換えます。
const newSheet = sheetToCopy.copy(folderName+"_テンプレ"); "_テンプレ" を 任意のテキストに置き換えます。
変数置き換え内訳

ステップ3:スクリプトを実行

最後にスクリプトを実行します。

  • 保存ボタンをクリックしてスクリプトを保存します。
  • createFolder01(sheetName, parentFolderUrl) を選択
  • メニューから「拡張機能」>「実行」を選択します。

OYAKUN
OYAKUN

任意のフォルダをたくさん作成する際にぜひ活用してください。