質問するログイン新規登録
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

985閲覧

Google driveにGASでフォルダを一括作成したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/03/28 07:32

0

0

Googleドライブにフォルダを一月分作成したいのですが、
"190401","190402", "190403", "190404".....
というのは効率が悪いので、1日~31日分をを一度に作成したいです。

function createFolder() { var folder = DriveApp.getFolderById"******"); //var folder = DriveApp.createFolder(""); var folder1 = ["190401","190431"]; var args1 = ["190401","190431"]; var folder1 = []; for (var i = 1; i < args1.length; i++){ folder1[i] = folder.createFolder(args1[i]); } }

上記だと、190401から31まで作成をしないといけないので、他の記載方法があればご教示いただけますでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • あるフォルダ下へ"190401","190402", "190403", "190404".....のような名前で31個のフォルダを作成する。

このように理解しました。30個程度のフォルダを一度に作成するとなると、forループでcreateFolder()を実行するのもありですが、時間がかかるかと思われます。そこで、時間を短縮することを目的としてバッチリクエストの使用を提案させていただきます。実際にバッチリクエストを実装しようとすると少し面倒なのですが、便利なライブラリが公開されており、これを利用することにします。

スクリプトを実行するまでの手順

1. ライブラリのインストール

  1. スクリプトエディタ上で、スクリプト -> ライブラリ を選択してダイアログを開きます。
  2. 「ライブラリを追加」のところへライブラリキーとして、 1HLv6tWz0oXFOJHerBTP8HsNmhpRqssijJatC92bv9Ym6HSN69_UuzcDk を入力し、追加ボタンを押します。
  3. バージョンは最新版を選択し、デベロッパーモードはONで宜しいかと思われます。
  4. 保存ボタンを押します。

2. サンプルスクリプトの実行

下記スクリプトエディタへコピーペーストし、作成したフォルダが入るフォルダIDを入力し、スクリプトを実行します。これにより、指定したフォルダ下へ、"190401","190402", "190403", "190404".....のようなフォルダが作成されます。

javascript

1function createFolder() { 2 // DriveApp.getFiles(); // これはDrive APIの有効とhttps://www.googleapis.com/auth/driveのスコープを自動で取得するためのコメント文です。 3 var folderId = "#####"; // ここに作成したフォルダを入れるフォルダIDを入れて下さい。 4 var reqs = []; 5 for (var i = 1; i <= 31; i++) { 6 reqs.push({ 7 method: "POST", 8 endpoint: "https://www.googleapis.com/drive/v3/files", 9 requestBody: {name: "1904" + ('0' + i).slice(-2), mimeType: MimeType.FOLDER, parents: [folderId]}, 10 }); 11 } 12 var requests = { 13 batchPath: "batch/drive/v3", 14 requests: reqs, 15 }; 16 var result = BatchRequest.Do(requests); 17 Logger.log(result); 18}

注意

  • もしも"1904"が2019年4月として使用する場合、4月は30日までです。これについてもしも修正されるようですとfor (var i = 1; i <= 31; i++)を修正してください。
  • バッチリクエストを使用する場合、1度のリクエストで100個分のAPIリクエストを1つのAPIで使用することができます。また、結果はリクエスト順に返されますが、実行自体は非同期のため、速度も速いと思われます。

参考

投稿2019/03/28 08:18

kisojin

総合スコア899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/29 02:17

このような便利なものがあるとは知りませんでした。 ご教示くださりありがとうございます。
退会済みユーザー

退会済みユーザー

2019/03/29 02:22

すごく時間短縮になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問