GoogleDriveにGASで100個数のフォルダを一括作成する方法を紹介します。
本記事のポイントとして
- スプレッドシートに記載したテキストを参照してフォルダを作成
- マスタシートを100個のフォルダすべてに格納する
上記環境を実現します。
意外と使う機会があったので備忘録っす
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を取得しておきます。
ステップ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)
を選択 - メニューから「拡張機能」>「実行」を選択します。
任意のフォルダをたくさん作成する際にぜひ活用してください。