スプレッドシートを基にGASで一気にGoogleドライブにフォルダ構造を作成する


はじめに

こんにちは。最近、実家の畑を勝手に荒らすおじさんがいるそうで、警察に通報しました。ロープはったり立ち入り禁止の札貼ったり、これで来なくなればいいのですが...

さて、今回はスプレッドシートに記載のフォルダの階層構造を基に、Googleドライブにフォルダ作成する機会があったので、せっかくなので記事にしました。

何かプロジェクト前とか、整理整頓したいぞって方いらっしゃいましたら、参考になれば幸いです

手順

  1. ルートフォルダ作成.
  2. 階層構造をスプレッドシートで作成.
  3. GASで1のスプレッドシートの情報取得.
  4. ルートフォルダを取得.
  5. スプレッドシートに記載のフォルダが空欄の場合はスキップ.
  6. 作成対象フォルダが既に作成済みの場合は当該フォルダをルートフォルダに切り替えてスキップ.
  7. 6に該当しない場合は指定フォルダ名でフォルダ作成.
  8. 4-7を繰り返し.

スプレッドシートを基にGASで一気にGoogleドライブにフォルダ構造を作成する

1. ルートフォルダ作成

こんな感じです↓
URLに含まれるfolder_idをスクリプトで使います

2. スプレッドシート作成

こんな感じ↓

3. スクリプト作成

スプレッドシートに紐づくスクリプトで作成しちゃいます。

4. 実スクリプト

const main = () => {
  const sheet = SpreadsheetApp.getActiveSheet()
  const data = sheet.getRange(2, 2, sheet.getLastRow() - 1, sheet.getLastColumn() - 1).getValues()
  const folder_id_root = 'xxxx'
  const folder_root = DriveApp.getFolderById(folder_id_root)

  let row, folder_name, folders, folder
  for (let i in data) {
    row = data[i]
    // 手順4
    folder = folder_root
    for (let j in row) {
      folder_name = row[j]
      if (! folder_name) {
        // 手順5
        continue
      }

      folders = folder.getFoldersByName(folder_name)
      if (folders.hasNext()) {
        // 手順6
        folder = folders.next()
        continue
      }
      // 手順7
      folder = folder.createFolder(folder_name)
    }
  }
}

5. 実行結果

こんな感じでできました!

おわりに

今回は年月で作りましたが、長期プロジェクト等々で一気に作りたいなんてときにお役立てくださいませ
それでは!