徹底解説!GASでのフォルダ操作と「for」文の使い方


GASでフォルダ内のファイルを取得する基本
まずは、GASでフォルダ内のファイルを取得することから始めようか。
フォルダIDを使ってフォルダを取得する
フォルダを扱うにはフォルダIDが必要だ。フォルダIDを使って、Googleドライブ上の特定のフォルダを取得する。
// フォルダIDでフォルダを取得
function getFolderById() {
const folderId = 'YOUR_FOLDER_ID';
const folder = DriveApp.getFolderById(folderId);
Logger.log(folder.getName());
}
– DriveApp.getFolderById(id): フォルダIDを指定してフォルダオブジェクトを取得する。
– folder.getName(): フォルダの名前を取得するためのメソッドだ。
フォルダ内のファイルを取得する方法
取得したフォルダ内のファイルをリスト化するにはこうするんだ。
// フォルダ内のファイルを取得
function listFilesInFolder() {
const folderId = 'YOUR_FOLDER_ID';
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
while (files.hasNext()) {
const file = files.next();
Logger.log('File Name: ' + file.getName());
}
}
– folder.getFiles(): フォルダ内のファイルをIterators(反復子)として取得する。
– files.hasNext(): 次のファイルが存在すればtrueを返す。
– files.next(): 現在のファイルオブジェクトを取得し、次に移動する。
GASで「for」文を活用する
複数のファイルを効率よく処理するために、「for」文を活用しよう。
for-inループを使用する
配列やオブジェクトを処理する際に役立つのがfor-inループだ。
const fileNames = ['file1', 'file2', 'file3'];
// for-inループで配列のインデックスを取得
for (let index in fileNames) {
Logger.log('Processing: ' + fileNames[index]);
}
– for (let index in array): 配列の各インデックスを反復処理する。
非推奨のforeachを避ける
実は、GASでは“foreach”は非推奨だ。かわりに「for」文を使用することをお勧めする。

GASでフォルダを作成する方法
フォルダを作成して階層をつくるのも簡単だ。
フォルダを作成する
GASでフォルダを作成するには以下の方法がある。
// 新しいフォルダを作成
function createFolder() {
const folderName = 'NewFolder';
const folder = DriveApp.createFolder(folderName);
Logger.log('Created folder: ' + folder.getName());
}
– DriveApp.createFolder(name): 指定した名前でフォルダを作成する。
フォルダの階層を作成する
さらに、階層構造を作りたいとき。
// サブフォルダを作成
function createFolderHierarchy() {
const parentFolder = DriveApp.createFolder('ParentFolder');
const childFolder = parentFolder.createFolder('ChildFolder');
Logger.log('Created hierarchy: ' + parentFolder.getName() + ' -> ' + childFolder.getName());
}
– folder.createFolder(name): 特定のフォルダ内にサブフォルダを作成する。

練習問題
次の練習問題で知識を確認してみよう。
- GASで、フォルダID “YOUR_FOLDER_ID” のフォルダ内にあるすべてのファイル名を取得し、ログに出力するスクリプトを書いてください。
- フォルダ “MainFolder” を作成し、その中に “SubFolder1” および “SubFolder2” を作成する階層を作るスクリプトを書いてください。
解答・解説
まずは、ファイル名を取得するスクリプト。
function logAllFileNames() {
const folderId = 'YOUR_FOLDER_ID';
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
while (files.hasNext()) {
const file = files.next();
Logger.log('File Name: ' + file.getName());
}
}
– DriveApp.getFolderById(id): フォルダIDでフォルダを取得、フォルダ内のファイルを反復して取得し、各ファイル名をログに出力する。
次に、フォルダ階層を作成するスクリプト。
function createFolderWithSubfolders() {
const mainFolder = DriveApp.createFolder('MainFolder');
const subfolder1 = mainFolder.createFolder('SubFolder1');
const subfolder2 = mainFolder.createFolder('SubFolder2');
Logger.log('Folder hierarchy created: ' + mainFolder.getName());
}
– DriveApp.createFolder(name): フォルダを作成し、そのフォルダ内に別のフォルダを作り階層構造を構成する。