指定したフォルダのファイル情報を取得【Google Apps Script】

GoogleDrive内にある指定したフォルダ内のファイル名・ID・URLの一覧を

スプレッドシートに出力していきます。1つずつ手順を追って説明。

※より分かりやすくするために、ID等を非表示にしていませんが消去済みのIDになります。

IDはご自身のGoogleDriveのフォルダで試してください。

スプレッドシート作成

GoogleDriveのファイル名をスプレッドシートに転記する為先にスプレッドシートを作成します。

まずGoogleからGoogleDriveを開き、新規ボタンを押下。

Googleスプレッドシートを選択し、空白のスプレッドシートから追加。

スプレッドシートが追加される為、スプレッドシート上部にある拡張機能タブを選択し

その中にあるAppsScriptを押下。

AppsScriptで無題のプロジェクトが開きます。

GoogleDriveに戻り、あとからわかるようにスプレッドシートの名前を変更しておきましょう。

名前を変更を選択します。

任意の名前に設定し、OKボタンを押下しましょう。

GoogleDriveを確認すると変更した名前にファイル名が変更されています。

フォルダ作成

次にフォルダを作成しましょう。

GoogleDrive上にフォルダを作成する場合、まず新規ボタンを押下します。

フォルダの名前を決めることができるので

今回は練習用フォルダと変更し作成ボタンを押しましょう。

GoogleDrive上に練習用フォルダというフォルダができました。

このフォルダ内のファイル一覧を取得していく為、練習用フォルダ上にファイルをドロップします。

ファイルはご自身で任意のファイルを入れてください。

ドロップしアップロード完了を待ちます。画面右

下にアップロード完了と出ればフォルダにアップロードができています。

ここではパワーポイント・Excel・テキストの3つのファイルをアップロードしています。

ファイル情報を取得

フォルダにファイルがアップロードできたら、ファイル名を取得していきます。

ファイル名を取得する為に、GoogleDriveApiを使用します。

GoogleDriveの一部の機能を使用することが可能です。

AppsScriptの画面からサービスを追加を押下します。

DriveAPIを探し、選択して追加しましょう。

少し待てばサービスの欄に追加されます。

このDriveAPIを追加することでGoogleAppsScript側から

GoogleDriveの一部の機能を使用することができます。

AppsScriptも後で見てわかるように名前を変更しておきましょう。

クリックしてタイトルを変更して名前を変更ボタンを押下します。

シート準備

シートに取得したデータを入れていく為、最初にシートを指定します。

こちらの命令文でSampleというシート名のシートをsheetという変数に設定します。

getActiveSpreadsheetメソッドは現在アクティブなスプレッドシートを返します。

今回の場合は先ほど作成したファイル取得用というスプレッドシートになります。

そしてgetSheetByName(name)メソッドでスプレッドシートからシートを指定します。

()内にシートの名前を文字列で指定することで指定した名前のシートを返すことが可能です。

これでSheetという変数名でこのSampleというシート名のシートを使用できるようになります。

GoogleDriveの機能を使用して指定したフォルダのファイル情報を取得していきます。

Filesという変数に指定したフォルダ内のすべてのファイルを取得して入れていきます。

DriveAppクラスにはGoogleDriveのファイルやフォルダを作成・検索・変更できる機能があります。

getFolderByIdメソッドは指定したIDのフォルダを取得することができます。

IDがわからない為、まずはフォルダのIDを調べます。

取得したいフォルダをダブルクリックで開きます。

フォルダが開いたらURLからIDをコピーします。


注意 ※こちらは皆がわかりやすくIDを表示していますが

この説明用のドライブのIDですので、こちらをコピーしても動きません。

フォルダを開いた際のURLの一番後ろの部分がフォルダのIDになります。

フォルダの指定ができたので、そのフォルダからすべてのファイルのコレクションを取得します。

.getFilesメソッドで先ほど指定したIDのフォルダのファイルのコレクションを取得することが可能です。

現在のイメージ図はこちらです。

シートをシート名で指定、フォルダをIDで指定し

そのフォルダのファイルのコレクションをfilesに設定。

すべてのファイルを取得出来たら、取得したアイテムの名前を順番に取得しログに出力していきます。

まず繰り返し命令を行う為に、While文を使用します。

While文は指定した条件式がtrueの間繰り返してくれます。

そしてhasNextメソッドはアイテムがまだあるかどうかを取得してくれます。

あればtrue、なければfalseの為、アイテムがある間繰り返すことができます。

つまり、while(files.hasNext())でfilesの中にアイテムがある間は

{}内を繰り返してもらう命令文になります。

console.logは()内に指定したものをログに出力できる命令になります。

一度ファイル名を取得し、console.logでログに出力してみましょう。

そして取得したデータに対してnextメソッドで次のアイテムを取得し

getNameメソッドでデータの名前を取得します。

そしてその情報をconsolo.logでログに出力するという形になります。

アイテムを順番に繰り返し、ログにファイル名を出力することができています。

getNameメソッドをgetIdメソッドへ変更してアイテムのIdを取得してみましょう。

先ほどのgetNameの部分をgetIdに変更するだけになります。

ログに各ファイルのIdが出力されています。

ファイルのIdもファイルを開くと目視で確認することもできます。

こちらのExcelファイルの場合は「18IKQE3c6tNAVMI_w2JohCLPWU5DI3UnO」の部分がIdになります。

この部分が先ほどのコードで取得出来ている形になります。

※こちらもわかりやすく表示していますが実在するファイルではありません

次にgetIdメソッドをgetUrlメソッドへ変更してアイテムのUrlを取得してみましょう。

ログに各ファイルのUrlが出力されています。

次にファイル名・Id・URLを全て取得していきます。

Nextメソッドで次のアイテムに移行してしまうので、一旦fileという変数にアイテムを設定して

fileからgetId・getName・getUrlで順番に情報を取得していきます。

こちらで一度実行して各アイテムの名前・ID・URLを順番にログに出力します。

各ファイルの名前・Id・Urlをログに出力することができています。

ログに出力しても仕方ない為、シートに転記していきます。

一度この3つの情報を配列に入れてセルに纏めて入れます。

まず空の配列を用意します。

そして配列にpushメソッドで要素を追加していきます。

pushメソッドは配列の末尾に要素を追加することが可能です。

今回は使用しませんが、他にもunshiftメソッドで先頭に要素を追加したり

spliceメソッドで指定位置に要素を追加する方法もあります。

配列aryにpushメソッドで取得した名前・ID・URLを追加していきます。

そして配列が完成したらその配列をシートの最終行に追加していきます。

一次元配列が完成したらシートに追加していきます。

appendRowメソッドは既存データが格納されている最終行の次の行に値を挿入することが可能です。

引数に先ほど名前・ID・URLを入れた一次元配列を指定して実行してみましょう。

こちらが完成形です。sheetがこのアクティブなスプレッドシートの

“Sample”というシート名のシートをしめしているのでそのシートの

最終行の次の行にデータを追加してきます。

実行すると、指定したフォルダにあるファイルの

名前・ID・URLを全て取得することができています。

フォルダ内のファイル名・URL等の一覧をサクッと出したい場合に便利です。

よかったら試してみて下さい。いつも有難う御座います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です