指定したフォルダのファイル情報を取得【Google Apps Script】
GoogleDrive内にある指定したフォルダ内のファイル名・ID・URLの一覧を
スプレッドシートに出力していきます。1つずつ手順を追って説明。
※より分かりやすくするために、ID等を非表示にしていませんが消去済みのIDになります。
IDはご自身のGoogleDriveのフォルダで試してください。
スプレッドシート作成
GoogleDriveのファイル名をスプレッドシートに転記する為先にスプレッドシートを作成します。
![](https://vba.company/wp-content/uploads/2023/05/スライド3-3-1024x576.jpg)
まずGoogleからGoogleDriveを開き、新規ボタンを押下。
![](https://vba.company/wp-content/uploads/2023/05/スライド4-3-1024x576.jpg)
Googleスプレッドシートを選択し、空白のスプレッドシートから追加。
![](https://vba.company/wp-content/uploads/2023/05/スライド5-3-1024x576.jpg)
スプレッドシートが追加される為、スプレッドシート上部にある拡張機能タブを選択し
その中にあるAppsScriptを押下。
![](https://vba.company/wp-content/uploads/2023/05/スライド6-3-1024x576.jpg)
AppsScriptで無題のプロジェクトが開きます。
![](https://vba.company/wp-content/uploads/2023/05/スライド7-3-1024x576.jpg)
GoogleDriveに戻り、あとからわかるようにスプレッドシートの名前を変更しておきましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド8-3-1024x576.jpg)
名前を変更を選択します。
![](https://vba.company/wp-content/uploads/2023/05/スライド9-3-1024x576.jpg)
任意の名前に設定し、OKボタンを押下しましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド10-3-1024x576.jpg)
GoogleDriveを確認すると変更した名前にファイル名が変更されています。
フォルダ作成
![](https://vba.company/wp-content/uploads/2023/05/スライド12-3-1024x576.jpg)
次にフォルダを作成しましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド13-3-1024x576.jpg)
GoogleDrive上にフォルダを作成する場合、まず新規ボタンを押下します。
![](https://vba.company/wp-content/uploads/2023/05/スライド14-4-1024x576.jpg)
フォルダの名前を決めることができるので
今回は練習用フォルダと変更し作成ボタンを押しましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド15-4-1024x576.jpg)
GoogleDrive上に練習用フォルダというフォルダができました。
![](https://vba.company/wp-content/uploads/2023/05/スライド16-3-1024x576.jpg)
このフォルダ内のファイル一覧を取得していく為、練習用フォルダ上にファイルをドロップします。
ファイルはご自身で任意のファイルを入れてください。
![](https://vba.company/wp-content/uploads/2023/05/スライド17-3-1024x576.jpg)
ドロップしアップロード完了を待ちます。画面右
下にアップロード完了と出ればフォルダにアップロードができています。
ここではパワーポイント・Excel・テキストの3つのファイルをアップロードしています。
ファイル情報を取得
フォルダにファイルがアップロードできたら、ファイル名を取得していきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド19-2-1024x576.jpg)
ファイル名を取得する為に、GoogleDriveApiを使用します。
GoogleDriveの一部の機能を使用することが可能です。
![](https://vba.company/wp-content/uploads/2023/05/スライド20-2-1024x576.jpg)
AppsScriptの画面からサービスを追加を押下します。
![](https://vba.company/wp-content/uploads/2023/05/スライド21-2-1024x576.jpg)
DriveAPIを探し、選択して追加しましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド22-2-1024x576.jpg)
少し待てばサービスの欄に追加されます。
![](https://vba.company/wp-content/uploads/2023/05/スライド23-2-1024x576.jpg)
このDriveAPIを追加することでGoogleAppsScript側から
GoogleDriveの一部の機能を使用することができます。
![](https://vba.company/wp-content/uploads/2023/05/スライド24-2-1024x576.jpg)
AppsScriptも後で見てわかるように名前を変更しておきましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド25-2-1024x576.jpg)
クリックしてタイトルを変更して名前を変更ボタンを押下します。
シート準備
シートに取得したデータを入れていく為、最初にシートを指定します。
![](https://vba.company/wp-content/uploads/2023/05/スライド27-3-1024x576.jpg)
こちらの命令文でSampleというシート名のシートをsheetという変数に設定します。
![](https://vba.company/wp-content/uploads/2023/05/スライド28-3-1024x576.jpg)
getActiveSpreadsheetメソッドは現在アクティブなスプレッドシートを返します。
今回の場合は先ほど作成したファイル取得用というスプレッドシートになります。
![](https://vba.company/wp-content/uploads/2023/05/スライド29-2-1024x576.jpg)
そしてgetSheetByName(name)メソッドでスプレッドシートからシートを指定します。
()内にシートの名前を文字列で指定することで指定した名前のシートを返すことが可能です。
これでSheetという変数名でこのSampleというシート名のシートを使用できるようになります。
![](https://vba.company/wp-content/uploads/2023/05/スライド30-2-1024x576.jpg)
GoogleDriveの機能を使用して指定したフォルダのファイル情報を取得していきます。
Filesという変数に指定したフォルダ内のすべてのファイルを取得して入れていきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド31-2-1024x576.jpg)
DriveAppクラスにはGoogleDriveのファイルやフォルダを作成・検索・変更できる機能があります。
![](https://vba.company/wp-content/uploads/2023/05/スライド32-2-1024x576.jpg)
getFolderByIdメソッドは指定したIDのフォルダを取得することができます。
IDがわからない為、まずはフォルダのIDを調べます。
![](https://vba.company/wp-content/uploads/2023/05/スライド34-2-1024x576.jpg)
取得したいフォルダをダブルクリックで開きます。
![](https://vba.company/wp-content/uploads/2023/05/スライド35-2-1024x576.jpg)
フォルダが開いたらURLからIDをコピーします。
注意 ※こちらは皆がわかりやすくIDを表示していますが
この説明用のドライブのIDですので、こちらをコピーしても動きません。
![](https://vba.company/wp-content/uploads/2023/05/スライド36-2-1024x576.jpg)
フォルダを開いた際のURLの一番後ろの部分がフォルダのIDになります。
![](https://vba.company/wp-content/uploads/2023/05/スライド37-2-1024x576.jpg)
フォルダの指定ができたので、そのフォルダからすべてのファイルのコレクションを取得します。
.getFilesメソッドで先ほど指定したIDのフォルダのファイルのコレクションを取得することが可能です。
![](https://vba.company/wp-content/uploads/2023/05/スライド38-2-1024x576.jpg)
現在のイメージ図はこちらです。
シートをシート名で指定、フォルダをIDで指定し
そのフォルダのファイルのコレクションをfilesに設定。
![](https://vba.company/wp-content/uploads/2023/05/スライド39-2-1024x576.jpg)
すべてのファイルを取得出来たら、取得したアイテムの名前を順番に取得しログに出力していきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド40-2-1024x576.jpg)
まず繰り返し命令を行う為に、While文を使用します。
While文は指定した条件式がtrueの間繰り返してくれます。
そしてhasNextメソッドはアイテムがまだあるかどうかを取得してくれます。
あればtrue、なければfalseの為、アイテムがある間繰り返すことができます。
つまり、while(files.hasNext())でfilesの中にアイテムがある間は
{}内を繰り返してもらう命令文になります。
![](https://vba.company/wp-content/uploads/2023/05/スライド41-2-1024x576.jpg)
console.logは()内に指定したものをログに出力できる命令になります。
一度ファイル名を取得し、console.logでログに出力してみましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド42-2-1024x576.jpg)
そして取得したデータに対してnextメソッドで次のアイテムを取得し
getNameメソッドでデータの名前を取得します。
そしてその情報をconsolo.logでログに出力するという形になります。
![](https://vba.company/wp-content/uploads/2023/05/スライド43-2-1024x576.jpg)
アイテムを順番に繰り返し、ログにファイル名を出力することができています。
![](https://vba.company/wp-content/uploads/2023/05/スライド44-2-1024x576.jpg)
getNameメソッドをgetIdメソッドへ変更してアイテムのIdを取得してみましょう。
先ほどのgetNameの部分をgetIdに変更するだけになります。
ログに各ファイルのIdが出力されています。
![](https://vba.company/wp-content/uploads/2023/05/スライド45-2-1024x576.jpg)
ファイルのIdもファイルを開くと目視で確認することもできます。
こちらのExcelファイルの場合は「18IKQE3c6tNAVMI_w2JohCLPWU5DI3UnO」の部分がIdになります。
この部分が先ほどのコードで取得出来ている形になります。
※こちらもわかりやすく表示していますが実在するファイルではありません
![](https://vba.company/wp-content/uploads/2023/05/スライド46-2-1024x576.jpg)
次にgetIdメソッドをgetUrlメソッドへ変更してアイテムのUrlを取得してみましょう。
ログに各ファイルのUrlが出力されています。
![](https://vba.company/wp-content/uploads/2023/05/スライド47-2-1024x576.jpg)
次にファイル名・Id・URLを全て取得していきます。
Nextメソッドで次のアイテムに移行してしまうので、一旦fileという変数にアイテムを設定して
fileからgetId・getName・getUrlで順番に情報を取得していきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド48-2-1024x576.jpg)
こちらで一度実行して各アイテムの名前・ID・URLを順番にログに出力します。
![](https://vba.company/wp-content/uploads/2023/05/スライド49-2-1024x576.jpg)
各ファイルの名前・Id・Urlをログに出力することができています。
![](https://vba.company/wp-content/uploads/2023/05/スライド50-2-1024x576.jpg)
ログに出力しても仕方ない為、シートに転記していきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド51-2-1024x576.jpg)
一度この3つの情報を配列に入れてセルに纏めて入れます。
![](https://vba.company/wp-content/uploads/2023/05/スライド52-2-1024x576.jpg)
まず空の配列を用意します。
![](https://vba.company/wp-content/uploads/2023/05/スライド53-3-1024x576.jpg)
そして配列にpushメソッドで要素を追加していきます。
pushメソッドは配列の末尾に要素を追加することが可能です。
![](https://vba.company/wp-content/uploads/2023/05/スライド54-3-1024x576.jpg)
今回は使用しませんが、他にもunshiftメソッドで先頭に要素を追加したり
spliceメソッドで指定位置に要素を追加する方法もあります。
![](https://vba.company/wp-content/uploads/2023/05/スライド55-3-1024x576.jpg)
配列aryにpushメソッドで取得した名前・ID・URLを追加していきます。
そして配列が完成したらその配列をシートの最終行に追加していきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド56-2-1024x576.jpg)
一次元配列が完成したらシートに追加していきます。
appendRowメソッドは既存データが格納されている最終行の次の行に値を挿入することが可能です。
引数に先ほど名前・ID・URLを入れた一次元配列を指定して実行してみましょう。
![](https://vba.company/wp-content/uploads/2023/05/スライド57-2-1024x576.jpg)
こちらが完成形です。sheetがこのアクティブなスプレッドシートの
“Sample”というシート名のシートをしめしているのでそのシートの
最終行の次の行にデータを追加してきます。
![](https://vba.company/wp-content/uploads/2023/05/スライド58-2-1024x576.jpg)
実行すると、指定したフォルダにあるファイルの
名前・ID・URLを全て取得することができています。
フォルダ内のファイル名・URL等の一覧をサクッと出したい場合に便利です。
よかったら試してみて下さい。いつも有難う御座います。