5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-06-15

はじめに

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

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

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

手順

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

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

1. ルートフォルダ作成

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

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

こんな感じ↓
a.png

3. スクリプト作成

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

a.png

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. 実行結果

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

a.png

おわりに

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

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?