こんにちは、もりです!
この記事では、Googleドライブで「指定フォルダ内のファイル名一覧を取得する方法」をいくつか紹介します。
Contents
指定フォルダ内のファイル名一覧を取得する
2通りの「フォルダ指定方法」を紹介します。
「フォルダID」でフォルダを指定する
この「フォルダID」のフォルダを探索してね、と指定する方法です。
「list」というシートのA列に、取得結果を書き込みます。
| 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 | function getFileList1_1() {   const ss = SpreadsheetApp.getActiveSpreadsheet();   const sheet = ss.getSheetByName('list');   let row = 1;   // A列の値をクリア   sheet.getRange(1,1,sheet.getMaxRows(),1).clearContent();   // 指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト)   const files = DriveApp.getFolderById('フォルダID').getFiles();   while (files.hasNext()) {     const file = files.next();     const filename = file.getName();     console.log(filename);     // A列に書き込み     sheet.getRange(row, 1).setValue(filename);     row++;   } } | 
「スプレッドシートが存在するフォルダ」を指定する
このスプレッドシート(コンテナバインドスクリプト)が存在するフォルダ(=同じ階層)を探索してね、と指定する方法です。
スプレッドシートの場所を移動すれば、スクリプトを書き換えなくても、実行結果が変わるのがポイントです。
「list」というシートのA列に、取得結果を書き込みます。
| 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | function getFileList1_2() {   const ss = SpreadsheetApp.getActiveSpreadsheet();   const sheet = ss.getSheetByName('list');   let row = 1;   // A列の値をクリア   sheet.getRange(1,1,sheet.getMaxRows(),1).clearContent();   //★POINT★このスプレッドシートが存在するフォルダIDを取得   const folderId = getFolderId_();   // 指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト)   const files = DriveApp.getFolderById(folderId).getFiles();   while (files.hasNext()) {     const file = files.next();     const filename = file.getName();     console.log(filename);     // このスプレッドシートは書き込み対象外     if (filename === ss.getName()) continue;     // A列に書き込み     sheet.getRange(row, 1).setValue(filename);     row++;   } } /* * このスプレッドシートが存在するフォルダの「フォルダID」を取得する * * @return {string} フォルダID */ function getFolderId_() {   //https://developers.google.com/apps-script/reference/drive/folder-iterator.html   const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();   const parentFolder = DriveApp.getFileById(ssId).getParents();   const folderId = parentFolder.next().getId();   return folderId; } | 
ファイル名に「指定の文字列」を含むファイルの一覧を取得する
上記のスクリプトは、指定フォルダ内の「すべてのファイル」を取得しました。次は、正規表現を使って、取得するファイル名を絞り込んでみましょう。
下記は、ファイル名の先頭が「test」から始まるファイルの一覧を取得するスクリプトです。
| 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 | function getFileList2_1() {   const ss = SpreadsheetApp.getActiveSpreadsheet();   const sheet = ss.getSheetByName('list');   let row = 1;   // A列の値をクリア   sheet.getRange(1,1,sheet.getMaxRows(),1).clearContent();   // 指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト)   const files = DriveApp.getFolderById('フォルダID').getFiles();   // ★POINT★正規表現で絞り込む   const reg = /^test.*?$/;   while (files.hasNext()) {     const file = files.next();     const filename = file.getName();     console.log(filename);     if (filename.match(reg)) { //条件に合致するファイル名のみ書き込み       sheet.getRange(row, 1).setValue(filename);       row++;     }   } } | 
ファイルに関わる色々な情報を併せて取得する(サイズ・URLなど)
最後におまけです。ファイルサイズやURLなど、他の情報も取得することができます。
Fileクラスの公式リファレンスを参照して、取得できる情報を確認してみましょう(get~~メソッド)
下記は、ファイル名・サイズ・URLの3データを取得するスクリプトです。
| 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 | function getFileList2_2() {   const ss = SpreadsheetApp.getActiveSpreadsheet();   const sheet = ss.getSheetByName('list');   // 指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト)   const files = DriveApp.getFolderById('フォルダID').getFiles();   let arrFiles = [];   while (files.hasNext()) {     const file = files.next();     const name = file.getName();     const size = file.getSize();     const url = file.getUrl();     arrFiles.push([name,size,url]);   }   console.log(arrFiles);   // A1セルを起点にして一括書き込み   sheet.getRange(1,1,arrFiles.length,arrFiles[0].length).setValues(arrFiles); } | 
【まとめ】ファイル名一覧を取得する
GASを使って、Googleドライブ内の「指定フォルダのファイル名一覧を取得する方法」を紹介しました。
- 「フォルダID」を使ってフォルダを直接指定する
- 「スプレッドシートが存在するフォルダ」を指定する
- 正規表現を使って、取得するファイル名を絞り込む
- ファイル名以外の情報(サイズ・URLなど)も取得する
要件に合わせて、組み合わせて使ってみてくださいね。
 
								 
							
							
							
															 
							
							
							
															 
							
							
							
															 
										
					 
									
 
										
										
										
																	 
										
										
										
																	 
										
										
										
																	 
										
										
										
																	