【簡単GAS】Googleドライブ上のフォルダの中のファイルの一覧を取得する方法


いつもありがとうございます!
ノンプログラマー向け「GAS(Google Apps Script)解説シリーズ」へようこそ。
本稿では「Googleドライブ上のフォルダの中のファイルの一覧を取得する方法」を解説いたします。
フォルダの中身の一覧を取得する操作は、GASを使った自動化において何かと出番の多い、基本的な処理のひとつです。
たとえば、ファイル名のチェックや、共有状況の確認、定期的なレポート作成など、さまざまな場面で応用が効きます。
初心者の方でも理解できるように、わかりやすく、丁寧に解説していきます。ぜひご覧ください。
Googleドライブ上のフォルダの中のファイルの一覧を取得する方法

アプリーションの仕様
ここでは、以下のようなシステム構成を例にとります。
your_folder/
├── フォルダ
│ ├── ファイルA
│ ├── ファイルB
│ └── ファイルC
└── フォルダの中のファイルの一覧を取得する


Google ドライブ内の任意のフォルダ(ここでは your_folder
)の直下に、「フォルダ」という名前のサブフォルダと、「フォルダの中のファイルの一覧を取得する」というスプレッドシートが格納されています。
このスプレッドシートにGAS(Google Apps Script)コードを記述し、「フォルダ」内に含まれるファイルの情報を自動的に取得する仕組みです。

次のセクションにて、この処理を実現するスクリプトの具体的な内容を解説していきます!
コードの実装

まず、コード全文を示します。
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu("スクリプトの実行") // メニューのタイトル
.addItem("フォルダ内のファイル一覧を取得", "listFilesInFolder")
.addToUi();
}
function listFilesInFolder() {
// 対象フォルダとスプレッドシート情報
const FOLDER_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // フォルダID
const SPREADSHEET_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // スプレッドシートのID
const SHEET_NAME = 'ファイル一覧'; // 対象のシート名
// スプレッドシートとシートを取得
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
if (!sheet) {
throw new Error(`シート "${SHEET_NAME}" が見つかりません`);
}
// シート初期化
sheet.clear();
sheet.appendRow(['ファイル名', 'ファイルID', 'URL', 'ファイル形式', '更新日時']);
// フォルダ内のファイルを取得して出力
const folder = DriveApp.getFolderById(FOLDER_ID);
const files = folder.getFiles();
while (files.hasNext()) {
const file = files.next();
sheet.appendRow([
file.getName(),
file.getId(),
file.getUrl(),
file.getMimeType(),
file.getLastUpdated()
]);
}
}
次に、基本的な動作の流れを説明します。
このコードは、スプレッドシートに追加されたカスタムメニューから実行します。メニュー「スクリプトの実行」から「フォルダ内のファイル一覧を取得」をクリックすると、処理が開始されます。

処理が始まると、指定したフォルダ内のファイルの情報が順に取得され、スプレッドシート内に書き込まれます。

以上が、基本的な処理の流れです。

ここからは、コードの詳細な解説をしていきます。
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu("スクリプトの実行") // メニューのタイトル
.addItem("フォルダ内ファイル一覧を取得", "listFilesInFolder")
.addToUi();
}
ここでは、スプレッドシートを開いたときに表示されるカスタムメニューを追加しています。
onOpen()
は、スプレッドシートを開いたタイミングで自動的に実行される関数です。
この中で、SpreadsheetApp.getUi()
を使ってユーザーインターフェースを取得し、「スクリプトの実行」という名前のメニューを作成しています。
そのメニューの中に「フォルダ内ファイル一覧を追加」という項目を追加し、クリックすると exportSheetAsExcel()
関数が実行されるように設定しています。
このようにすることで、ユーザーがスプレッドシートのメニューから、スクリプトを直接呼び出せるようになります。
function listFilesInFolder() {
// 対象フォルダとスプレッドシート情報
const FOLDER_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // フォルダID
const SPREADSHEET_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // スプレッドシートのID
const SHEET_NAME = 'ファイル一覧'; // 対象のシート名
ここでは、処理対象となるGoogleドライブのフォルダと、結果を書き込むGoogleスプレッドシートの情報を定数として指定しています。
FOLDER_ID
は、一覧を取得したいGoogleドライブフォルダのIDです。SPREADSHEET_ID
は、結果を書き込むスプレッドシートのIDです。SHEET_NAME
は、スプレッドシート内の書き込み先シートの名前です。
// スプレッドシートとシートを取得
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
ここでは、指定したスプレッドシートと、対象となるシートを取得しています。
SpreadsheetApp.openById(SPREADSHEET_ID)
は、スプレッドシートのIDからそのファイルを開く関数です。Google スプレッドシートのURL中に含まれるIDを指定することで、任意のシートにアクセスできます。getSheetByName(SHEET_NAME)
は、スプレッドシート内のシート名を指定して、そのシートを取得します。
この処理によって、後続のファイル情報を書き込むための準備が整います。
if (!sheet) {
throw new Error(`シート "${SHEET_NAME}" が見つかりません`);
}
ここでは、指定したシートが存在するかどうかを確認し、存在していない場合にはエラーを返して処理を中断します。
!sheet
は、「sheet が存在しない場合」を意味する条件式です。throw new Error(...)
によって、エラーメッセージを投げると同時に、スクリプトの実行をそこで中断します。
このように明示的にエラーを発生させることで、問題がある状態のまま処理を続けることを防ぎます。
// シート初期化
sheet.clear();
sheet.appendRow(['ファイル名', 'ファイルID', 'URL', 'ファイル形式', '更新日時']);
ここでは、スプレッドシートの初期化(内容の消去)と見出し行の追加を行っています。
sheet.clear()
は、対象のシートに書かれているすべてのセルの内容と書式を削除します。これにより、前回の実行結果が残っている場合でも、常に最新の状態にリセットされます。appendRow([...])
は、1行分のデータを末尾に追加する関数です。ここでは、列ごとの見出し(カラム名)として、ファイルの基本情報を表す項目を設定しています。
// フォルダ内のファイルを取得して出力
const folder = DriveApp.getFolderById(FOLDER_ID);
const files = folder.getFiles();
ここでは、Google ドライブ上の指定フォルダに含まれるファイル一覧を取得しています。
DriveApp.getFolderById(FOLDER_ID)
は、指定したフォルダIDをもとに、該当のフォルダを取得する関数です。なお、FOLDER_ID
は、コードの冒頭で定義された定数であり、対象フォルダを特定するために使用されています。getFiles()
は、そのフォルダ内のすべてのファイルを取得し、FileIterator
オブジェクトとして返します。このオブジェクトは、あとでwhile
ループで順に処理されます。
この処理によって、ファイル一覧の出力に必要なデータの準備が整います。
while (files.hasNext()) {
const file = files.next();
sheet.appendRow([
file.getName(),
file.getId(),
file.getUrl(),
file.getMimeType(),
file.getLastUpdated()
]);
}
}
ここでは、FileIterator
オブジェクトからファイルを1件ずつ取り出して、スプレッドシートに出力しています。
files.hasNext()
は、まだ処理していないファイルが残っているかどうかを判定する関数です。files.next()
で、次のファイルを取得します。sheet.appendRow([...])
によって、ファイルの情報を1行としてシートに追加しています。
出力される情報は、以下の5項目です。
項目 | 説明 |
---|---|
file.getName() | ファイル名 |
file.getId() | ファイルID(Drive上の一意のID) |
file.getUrl() | ファイルのURL |
file.getMimeType() | ファイルの形式(例:PDF、Excelなど) |
file.getLastUpdated() | ファイルの最終更新日時 |

以上で解説は終了です。ありがとうございました!
【初心者歓迎】【無料相談受付中】業務支援アプリケーション作成のご相談を承ります

いつもありがとうございます!
限られた時間をより良く使い、日本の生産性を高めたい──
この取り組みが、社会全体の課題を解決する一歩になると信じています。
みんなの実用学を運営するソフトデザイン工房では、業務設計と業務支援アプリケーション作成のご相談を承っております。
初心者歓迎。無料相談受付中。気になる方は、お気軽にご相談ください。
こちらの記事でも紹介しておりますので、もしよろしければ、ご覧ください。
おわりに


ご覧いただきありがとうございました!
今回の記事では、「Drive APIを使用して GoogleスプレッドシートをプレーンテキストのExcelファイルでローカルにダウンロードする方法」を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。