- あるフォルダ下へ"190401","190402", "190403", "190404".....のような名前で31個のフォルダを作成する。
このように理解しました。30個程度のフォルダを一度に作成するとなると、forループでcreateFolder()
を実行するのもありですが、時間がかかるかと思われます。そこで、時間を短縮することを目的としてバッチリクエストの使用を提案させていただきます。実際にバッチリクエストを実装しようとすると少し面倒なのですが、便利なライブラリが公開されており、これを利用することにします。
スクリプトを実行するまでの手順
1. ライブラリのインストール
- スクリプトエディタ上で、スクリプト -> ライブラリ を選択してダイアログを開きます。
- 「ライブラリを追加」のところへライブラリキーとして、
1HLv6tWz0oXFOJHerBTP8HsNmhpRqssijJatC92bv9Ym6HSN69_UuzcDk
を入力し、追加ボタンを押します。
- バージョンは最新版を選択し、デベロッパーモードはONで宜しいかと思われます。
- 保存ボタンを押します。
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/29 02:17
退会済みユーザー
2019/03/29 02:22