概要
Google Apps Script(以下GAS)でGoogleDriveの特定フォルダのファイル一覧を取得します。
フォルダの指定には、 フォルダID
と フォルダ名
でアクセスする方法があります。
フォルダIDでファイル一覧を取得
フォルダIDとは
フォルダIDとは、GoogleDriveで該当フォルダを表示した際にURL部分に表示されるIDのことです。
※ https://drive.google.com/drive/u/0/folders/
以下の部分
コード
DriveApp.getFolderById
にフォルダIDを指定して、folderを取得します。
取得したフォルダの getFiles()
メソッドでファイル一覧を取得します。
DriveApp.getFolderById(folderID);
ファイル情報はイテレーターで取得する形となるので、 hasNext()
でファイルの存在を確認しながら next()
でファイルの実態を取得します。
ファイル名は getName()
で取得できます。
ファイルIDを取得したい場合は getId()
メソッドを利用します。
function myFunccton() {
let folderID = "XXXXXXXXXX"
let folder = DriveApp.getFolderById(folderID);
let files = folder.getFiles();
while(files.hasNext()) {
file = files.next();
console.log(`[${file.getName()}]${file.getId()}`);
}
}
ちなみに文字列部分をバッククォートで囲んでおくと、 ${}
を利用して、変数や関数の戻り値を文字出力することができます。
結果
ログに以下のような一覧が表示されます。
(ID部分隠してます)
フォルダ名でファイル一覧を取得
DriveApp.getFoldersByName
を使うと、フォルダ名を指定してフォルダを取得することもできます。
GoogleDrive上にある全ての同じフォルダ名を取得する形となるので、戻り値はフォルダイテレータとなります。
今回は、指定したフォルダ名がGoogleDriveに一つしかないと決め打ちした前提で、イテレータの最初のフォルダを取得してします。
DriveApp.getFoldersByName(folderName);
コード
コードは以下のとおりです。
結果はフォルダID指定の場合と同じなので省略します。
function myFunction() {
let folderName = "SubFolder"
// イテレータで取れるので1つ目を決め打ちで取得
let folder = DriveApp.getFoldersByName(folderName).next();
let files = folder.getFiles();
while(files.hasNext()) {
file = files.next();
console.log(`[${file.getName()}]${file.getId()}`);
}
}
注意点
GoogleDriveへのアクセスとなる為、初回実行時はアクセス承認を行う必要があります。
ちょっと手数が多いので、手続きのスクショを貼っておきます。
アクセス許可確認
該当Googleアカウントの選択
警告ダイアログ
詳細が表示されるので、 (安全ではないページ)に移動
をクリック
アクセスリクエストダイアログ
以上の手続きを済ませたあともう一度実行すると、普通に実行できるようになります。
参考情報
■ Google公式の DriveApp Api
リファレンス
https://developers.google.com/apps-script/reference/drive/drive-app
■ Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプト
https://tonari-it.com/gas-google-drive-app/