Google Drive上に複数のフォルダを同時に作成したいときがあります。
しかし一つずつ作成するのはメンドウなので、どうせならボタン一つで作れるようにしたいところです。
そこで今回は、以下のようにGoogleDriveにフォルダを一発作成する方法を紹介します。
GAS(Google Apps Script)というプログラムを活用しますが、GASの知識がなくても使いこなせるような紹介していきます。
目次
GASで複数フォルダを一気に作成する手順を3ステップで解説
この記事では、以下の操作を行えば、複数フォルダを自動作成作成できるようにします。
手順2|スプレッドシートにフォルダ名を記入する
手順3|スプレッドシートのボタンをクリックする
実際に操作を画像を使いながら、解説していきます。
手順1|GoogleドライブのURLをスプレッドシートのセルB1にコピペする
以下のようにセルB1にフォルダURLを貼り付けます。
手順2|スプレッドシートに作成したいフォルダの名前を記入する
手順3|スプレッドシートのボタンをクリックする
これでプログラムが起動して、フォルダ数が10個程度であれば、5秒程度でフォルダを作成してくれます。
プログラムの起動時間は、作成するフォルダ数によります。フォルダ数が増えるとプログラムの処理時間を増えます。
これでGoogle Drive上にフォルダを一つずつ作成して、名前を変更するよりもカンタンで早くフォルダを作成できるようになります。
補足|作成したフォルダが間違っていたら
作成したフォルダの保管先のURLを間違えたり、フォルダ名に誤記があったりした場合は、以下の方法でフォルダを削除して、ステップ1からやり直します。
2. 作成したフォルダを削除する|[Delete]
これで何度でもやり直しできるので、フォルダ作成のストレスを軽減できます。
それでは以下で、この仕組みを作成する方法について紹介していきます。
仕組みづくりは、10分もあればできるようになるはずです。
GASで複数フォルダを一気に作成する方法をゼロから作ってみる|ステップごとに解説
ステップ2|スプレッドシートに必要情報を入力する
ステップ3|GASプログラムをコピペする
ステップ4|スプレッドシートにボタンを設置する
ステップ5|ステップ4のボタンをクリックしたらステップ3のプログラムが動くようにする
それでは、ゼロから作っていけるように作り方を順を追って説明していきます。
ステップ1|スプレッドシートを準備する
まずは、空のスプレッドシートを準備します。
新しいスプレッドシートではなく、既存のスプレッドシートでも問題ありません。
ただし、シート名はシート1としておくことをオススメします。
これから紹介するプログラムをそのまま使う場合、「シート1」でないと動かないので注意が必要です。
ステップ2|スプレッドシートに必要情報を入力する
以下の通り、スプレッドシートに必要情報を入力していきます。
2. セルA1, B1, C1 に情報を記入する
3. セルA3の下のセルにフォルダパスを入力する
以下で詳しく解説していきます。
1. ファイル名を変更する
実は、ここは重要ではありません。
「無題のスプレッドシート」のままだと分かりづらいので、スプレッドシート名を変更しました。
好みの問題なので、不要と思う場合はスキップして問題ありません。
また既存のスプレッドシートを使う場合も、スキップして構いません。
2. セルA1, B1, C1 に情報を記入する
以下の記載は、他の人がこの仕組みを使う場合にも、操作を迷わないするのが目的です。
セルA1:「フォルダパス」と記載し背景色を薄青にする(目立たせるため)
セルB1:空欄(ここはフォルダURLをコピペするセル)
セルC1:「←にフォルダ作成したいGoogleDriveのURLを入力する」と記載する(セルB1にフォルダURLを入力してもらうため)
こうすることで、セルB1にフォルダURLをコピペしてもらうようにします。
3. セルA3の下のセルにフォルダ名を入力する
セルA3の下のセルに作成したいフォルダの名称を入力するようにします。
ここで記入した内容がそのままフォルダ名となります。
ステップ3|GASプログラムをコピペする
2. スクリプトエディタをクリックする
3. GASプログラムをデフォルトの記載を削除する
4. この記事で紹介しているGASプログラムをコピペする
5. ファイルをクリックする
6. 保存をクリックする
以下で一つずつ解説していきます。
そうすると、以下のスクリプトエディタを出現します。
ちなみに1と2の作業は以下のショートカットキーでも開くことが可能です。
2. スクリプトエディタをクリックする|[E]
以下のリンク先のGASプログラムをコピーします。(リンク先は同じページ下部です)
まず、以下のスクリプトエディタを選択して、もともと記載されているプログラムを削除します。
そして、コピーしたGasプログラムを貼り付けます。
ここまで作業が進むと以下のようになっているはずです。
ここまで出来たら、以下のとおりファイルを保存します。
この作業は[Ctrl] + [S]でも可能です。ショートカットキーを使う方が早いので、ショートカットキーでの作業をオススメします。
ちなみに、この作業を見て、プログラムエディタの背景色が黒になっていたり、細かい操作が分かりづらいと感じる人がいるかもしれません。
その場合は、以下の動画をご覧いただくことをオススメします。
GASを使い始めるまでの操作手順を動画で解説しています。動画の方がよりイメージがつくはずです。
以下、動画の目次です。
本記事で紹介したい内容は全て動画でお伝えしているので、ぜひ動画をご覧ください。
0:26 ステップ1|Googleアカウントでログイン(Googleアカウントがない場合は、アカウントを作成する)
1:06 ステップ2|Googleスプレッドシートを起動する
1:32 ステップ3|スクリプトエディタを起動する
1:55 ステップ4|背景色を黒にする(実施してもしなくてもOK)
https://chrome.google.com/webstore/detail/appsscript-color/ciggahcpieccaejjdpkllokejakhkome
3:10 スプレッドシートに情報を入力していく
4:18 Google Apps Scriptのプログラムを入れる(プログラムは以下のウェブページで公開)
4:44 ステップ5|動画内で紹介しているプログラムを使うときの3つの注意点
4:48 注意点1|ライブラリ設定をする
MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48 Moment.jsを使うためのライブラリキーで使用可能
5:47 注意点2|スプレッドシートのIDを変更する
6:08 注意点3|スプレッドシートのシート名に注意する
6:51 ステップ6| Authorization requiredが出るので、許可を確認
7:36 ステップ7|プログラムを実行する3つの方法
7:36 実行方法1|実行ボタンでプログラムを実行
7:41 実行方法2|ボタンクリックでプログラムを実行
8:57 実行方法3|トリガー設定して定期実行
動画よりテキストのほうが得意な人は、以下の記事を参考にしていただくと良いです。
ステップ4|スプレッドシートにボタンを設置する
2. 図形描画をクリックする
3. 図形マークをクリックする
4. 図形をクリックする
5. 四角マークをクリックする
6. マウスドラックで四角図形を作成する
7. 四角の図形の中に「フォルダ作成」と記入する([Ctrl] + [E]で中央に寄せる)
8. 「保存して終了」をクリックする
上記の操作を行って、スプレッドシートにボタンを設置します。
ステップ5|ステップ4のボタンクリックでステップ3のプログラムが動くようにする
2. 「スクリプトを割り当て」をクリックする
3. 「createFolders」と記入する(先ほどコピペしたGASプログラムの名称)
4. 「OK」ボタンをクリックする
上記の操作で、スプレッドシートのボタンをクリックすると、プログラムが起動するようにします。
動作確認をしてみる
それでは、複数フォルダを自動作成する仕組みができたので、動作確認をします。
以下の手順で進めていきます。
2. 1でコピーしたフォルダパスをスプレッドシートのセルB1に貼り付ける
3. セルA4から下に作成したいフォルダ名を記載する
4. ボタンをクリックする
Google DriveのURLを取得するときのコツですが、以下のショートカットキーを使うと操作を早くできます。
2. 選択箇所をコピーする|[Ctrl] + [C]
ボタンをクリックすると、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可必要です。」という画面が表示される場合があります。
その場合は、以下のとおり対応していきます。
2. 許可を出したいアカウントをクリックする
3. 「詳細」をクリックする
4. 「無題のプロジェクト(安全ではないページ)に移動」をクリックする
5. 「許可」をクリックする
6. 「フォルダ作成」のボタンをクリックする
そうすると、以下のようにボタンをクリックすることで、スクリプトが動きます。
上記の「スクリプトを実行しています」という表示が消えたら、Google Driveを開いてみます。
そうすると、以下のようにスプレッドシートに記入したフォルダを作成することができます。
ここまで紹介した内容を実践すれば、動作チェックで上手くいくことが確認できるはずです。
もし不具合が生じた場合は、ステップ1から内容をチェックしてみてください。
とくに以下の内容を間違えていると、上手く動きません。
●フォルダパスが正しくない
●作成したいフォルダパスがA4以下に記入されていない。
なぜプログラムだけを紹介しないのか?
話が逸れますが、今回紹介する複数フォルダ作成方法はGASと呼ばれるプログラムを活用しています。
しかし、このGASプログラムだけを紹介することはしません。
なぜなら、「プログラムはこれです」と記載したところで、プログラムを理解している人しか使いこなせないからです。
せっかくなら、プログラムに精通していない人にこそ作業を効率化してもらいたいのが私の思いです。
そのため、上記のとおり、プログラムの知識が少ない人でも使用できるように、手順ごとに紹介をしました。
GASで複数フォルダを一気に作成するプログラムの詳細を解説
今回紹介している複数フォルダを一気に作成する方法は、GASプログラムを活用しています。
GASプログラムについてはコピペで使えるようにしています。
しかし、中にはプログラムを理解したい人もいるはずです。
そこで、GASプログラムの詳細も紹介していきます。
まず今回使用しているGASプログラムを以下に記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//プログラム0|プログラム名を付ける function createFolders() { //プログラム1|スプレッドシートの情報を取得する var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetname = 'シート1'; var sheet = spreadsheet.getSheetByName(sheetname); //プログラム2|フォルダパスの情報を取得する var folderurl = sheet.getRange('B1').getValue(); //プログラム3|フォルダパスの情報を取得する var myArray= folderurl.split('/'); var folderid = myArray[myArray.length-1]; //プログラム4|作成したいフォルダ名を取得する var Lastrow = sheet.getLastRow(); var myRange = sheet.getRange(4, 1, Lastrow-3).getValues(); //プログラム5|作成先のフォルダを取得する var folder = DriveApp.getFolderById(folderid); //プログラム6|フォルダを作成する for (var i = 0; i < myRange.length; i++) { if (myRange[i][0] !== "") { folder.createFolder(myRange[i][0]); } } } |
プログラムについては以下で詳しく解説していきます。
プログラム0|プログラム名を付ける
1 |
function createFolders() { |
「createFolders()」という名前のプログラム名ということを指す
この名称に記載ルールはありません。
したがって、createFoldersという名前を好みのプログラム名に変更することは問題ありません。
プログラム1|スプレッドシートの情報を取得する
1 2 3 |
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetname = 'シート1'; var sheet = spreadsheet.getSheetByName(sheetname); |
一行ずつ解説していきます。
1 |
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); |
spreadsheetという変数に、アクティブになっているスプレッドシートを設定する
アクティブなスプレッドシートという意味が良くわからない人は、現在操作しているスプレッドシートをイメージするといいです。
もしあなたがVBAを勉強したことがあるなら、activesheetというプログラムを見たことがあるかもしれません。
それと同じようなものだと思っていただければ、問題はないと思います。
1 |
var sheetname = 'シート1'; |
sheetnameという変数に、「シート1」という文字列にする
sheetnameにシート名の情報を入れます。
ここでは「シート1」としていますが、この名前である必要はありません。
大切なのは、アクティブなスプレッドシートのシート名と一致させることです。
シート名が一致していないとエラーになり、プログラムが上手く動きません。
1 |
var sheet = spreadsheet.getSheetByName(sheetname); |
sheetという変数に、1行目で変数設定したspreadsheet(アクティブなスプレッドシート)に存在する2行目で設定したsheetname(ここでは「シート1」)を設定する
補足ですが、2行目で「var sheetname = ‘シート1’;」と記載していますが、この一文を削除して、以下のようにしても問題ありません。
1 2 3 4 5 |
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetname = 'シート1'; //↑の2行は、以下の1行に集約可能 var sheet = spreadsheet.getSheetByName('シート1'); |
このようにした方が、1行に収まるというメリットがありますが、敢えてそうしていません。
なぜなら、シート名に変更があったとき、プログラムの行を分けていた方がメンテナンスしやすいからです。
ただ、これは好みの問題でもありますので、どちらの方法でも問題ありません。
プログラム2|フォルダパスの情報を取得する
1 |
var folderurl = sheet.getRange('B1').getValue(); |
folderurlという変数に、「シート1」のセルB1の値を入れる
セルB1には、フォルダをしたいフォルダURLを入力しているので、folderurlでフォルダURLを取得します。
プログラム3|フォルダパスの情報を取得する
1 2 |
var myArray= folderurl.split('/'); var folderid = myArray[myArray.length-1]; |
一行ずつ解説していきます。
1 |
var myArray= folderurl.split('/'); |
folderurlの値を「/」で区切って、配列にする
たとえば、folderurlの値が「https://drive.google.com/drive/u/0/folders/1VtGyIKsxI6ZCB-D4rGGeRlvR1ZniWUYw」の場合は、myArrayは以下のようになります。
myArray = [ ‘https:’, ”, ‘drive.google.com’, ‘drive’, ‘u’, ‘0’, ‘folders’, ‘1VtGyIKsxI6ZCB-D4rGGeRlvR1ZniWUYw’ ]
split(‘/’)とすることで、URLの「/」で区切って、それを一つずつ配列の要素として格納していきます。
さらに詳しく言うと以下のようになります。
myArray[1] = ”
myArray[2] = ‘drive.google.com’
myArray[3] = ‘drive’
myArray[4] = ‘u’
myArray[5] = ‘0’
myArray[6] = ‘folders’
myArray[7] = ‘1VtGyIKsxI6ZCB-D4rGGeRlvR1ZniWUYw’
なお、myArray.length = 8となります。0,1,2,・・・,7となっていて、合計8コの要素数だからです。
1 |
var folderid = myArray[myArray.length-1]; |
folderidという変数にmyArray[myArray.length-1]を入れる
上記の例で考えると、myArray.length = 8のため、myArray.length -1 = 7となります。
したがって、
myArray[myArray.length – 1]
= myArray[7]
= ‘1VtGyIKsxI6ZCB-D4rGGeRlvR1ZniWUYw’
となるため、これでフォルダIDを取得することができます。
プログラム4|作成したいフォルダ名を取得する
1 2 |
var Lastrow = sheet.getLastRow(); var myRange = sheet.getRange(4, 1, Lastrow-3).getValues(); |
一行ずつ解説していきます。
1 |
var Lastrow = sheet.getLastRow(); |
Lastrowという変数にsheet(ここではシート1)の最終行を取得する
データが格納されている最終行を取得します。
この値は、次のプログラムで複数のフォルダ名を一気に取得するのですが、複数のフォルダ名を範囲取得するときの範囲設定に使います。
1 |
var myRange = sheet.getRange(4, 1, Lastrow-3).getValues(); |
myRangeという変数にsheet(シート1)の「行4,列1」(セルA4)から「Lastrow-4」分の下に行をずらしたセルまでの値を配列として取得する
一般式としては、getRange(行開始地点, 列開始地点, 行要素数, 列要素数).getValuesとして使っていきます。
一般式だけを説明しても、イメージが浮かべるのが難しいので、今回の事例を使って説明していきます。
たとえば、Lastrowが15だった場合、「getRange(4, 1, Lastrow-3).getValues」は「セルA4からセルA15までの値」となります。
つまり、Lastrow = 15 のとき、myRangeはセルA4からセルA15までの値を取得し、プログラムでは以下のように配列として値を取得します。
注意したいのは、「getRange().getValues」でスプレッドシートの値を取得すると、都合上、二次元配列として格納されます。
具体的に言うと、以下のように値が格納されています。
myRange[i][1] = ‘フォルダ2’
myRange[i][2] = ‘フォルダ3’
myRange[i][3] = ‘フォルダ4’
myRange[i][4] = ‘フォルダ5’
myRange[i][5] = ‘フォルダ6’
myRange[i][6] = ‘フォルダ7’
myRange[i][7] = ‘フォルダ8’
myRange[i][8] = ‘フォルダ9’
myRange[i][9] = ‘フォルダ10’
myRange[i][10] = ‘フォルダ11’
myRange[i][11] = ‘フォルダ12’
myRange[i]ではなく、myRange[i][0]で値を取得するのがカギです。
プログラム5|作成先のフォルダを取得する
1 |
var folder = DriveApp.getFolderById(folderid); |
folderという変数に、GoogleDrive上のフォルダを変数folderid(プログラム3の2行目で設定)をもとに取得する
実はfolderurlで取得した方がラクなので、Google Drive上のフォルダはIDでしか取得できません。
そのため、プログラム3の2行目でfolderidを取得しておく必要があったわけです。
プログラム6|フォルダを作成する
1 2 3 4 5 6 |
for (var i = 0; i < myRange.length; i++) { if (myRange[i][0] !== "") { folder.createFolder(myRange[i][0]); } } } |
一行ずつ解説していきます。
1 2 |
for (var i = 0; i < myRange.length; i++) { } |
iを0,1,2・・・myRange.lengthまで一つずつカウントアップしていく。カウントアップするたびに{}内のプログラムを動かす。
myRange.lengthはプログラム4で設定しており、作成したいフォルダ数によって変わります。
たとえば、作成したいフォルダが12コあれば、myRange.length = 12となります。
この場合、iを0,1,2・・・11, myRange.length(12)とカウントアップしていきます。
1 2 |
if (myRange[i][0] !== "") { } |
「(左辺)!== (右辺) {} 」は(左辺)と(右辺)が一致しない場合は、{}内のプログラムを動かす
今回、右辺で使っている「””」は、空欄(何もない)ことを意味します。
したがって、「if (myRange[i][0] !== “”)」は「もしmyRange[i][0]の中身が””(空欄)でなければ」となります。
myRange[i][0]というのは、プログラム4の2行目で説明したとおり、二次元配列になっているため、敢えてmyRange[i][0]としています。
1 |
folder.createFolder(myRange[i][0]); |
myRange[i][0]の値の名前でフォルダを作成する
folderはプログラム5で設定したフォルダパスを指しています。
このfolderに対して、「.createFolder」でフォルダを作成する指示を出します。
そして、(myRange[i][0])でフォルダの名称を指定しています。
1つの上のプログラムで、「if (myRange[i][0] !== “”) 」としたのはmyRange[i][0]が空欄だった場合に、フォルダを作成するプログラムを動かさないようにするためです。
プログラムの説明は以上です。
Google Apps Script(GAS)について詳しく理解したいなら
Google Apps Script(GAS)を活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にGASを活用して効率化してきた作業は以下の動画で解説しています。
動画を見てみると、あなたの仕事にどのようにGASを応用すればいいのかイメージが浮かぶこともあると思います。
ぜひご覧ください。
GASの使い方・始め方を知らない人にはこちらの記事・動画がオススメ
この機会に、「GASを使い方を知りたい」と思った人もいるかもしれません。
そのように感じている人は、ぜひ以下の記事をご覧ください。
10分程度でGoogle Apps Scriptを使うためのスタート地点に立てるように解説をしています。
当然、プログラミング経験ゼロでGAS知識ゼロであれば、使いこなせるようにまでには一定期間の勉強が必要です。
このサイトでもいくつか事例を使って、GASの実践方法を紹介しています。
興味がある人は以下の記事もご覧ください。
オススメの書籍を紹介
書籍に関しては、以下を読んで購入しました。
GASの全体感をつかむには良いと思います。
ただし、実際の勉強は書籍よりもウェブサイトを活用してきました。
はっきり言って、ウェブサイトだけでも十分に勉強できるほど数多くの情報がアップされています。
書籍で全体感をつかんだら、ウェブサイトでの学習に切り替えたほうが良いのが私の考えです。
Googleスプレッドシートを効率的に操作したいなら
この記事ではGASを活用した仕事の効率化の事例を紹介してきました。
しかしGoogleスプレッドシートの仕事を早くすることを目指すなら、GAS以外の方法もあります。
たとえば、以下の方法です。
上記の内容については、以下の動画で紹介しています。
ぜひGoogleスプレッドシートを上手に扱えるようになりたい人はご覧いただきたいです。