カレントフォルダを取得
Google Apps Script(GAS)で、スプレッドシートと同じ階層にフォルダを作成したい場合やファイルを出力したい場合などでは、スプレッドシートのあるフォルダ(カレントフォルダ)の情報が取得したいことがあると思います。その時に使用することができるソースコードです。
コード
/**
* スプレッドシートのあるフォルダ(カレントフォルダ)のファイル名・IDを取得する。
*/
function getCurrentFolder() {
// アクティブなスプレッドシートのIDを取得
const spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId();
// スプレッドシートをFileオブジェクトで取得し直す。
const file = DriveApp.getFileById(spreadsheetId);
// 親フォルダを取得する。
const folders = file.getParents();
// 親フォルダの数だけ繰り返す
while(folders.hasNext()) {
// フォルダ情報
let folder = folders.next();
// コンソールにフォルダ名とIDを出力
console.log(`${folder.getName()} : ${folder.getId()}`);
}
}
解説
7行目で、アクティブなスプレッドシートのIDを取得しています。
10行目では、親フォルダを取得するため、DriveApp.Fileオブジェクトでスプレッドシートを取得し直しています。
13行目で、親フォルダの情報を取得しています。
- Googleドライブでは、ファイルやフォルダを複数のフォルダへ設置することができます。そのため、親フォルダが複数あるファイルもあるので、Iteratorで親フォルダの情報は取得されます。
16行目は、取得された親フォルダの件数分繰り返すためのwhile文になります。
19行目は、13行目で取得した親フォルダの情報から、フォルダ情報を1件取得します。
22行目で、コンソールへ、フォルダ名と、IDを出力しています。
実行結果
ソースコードをそのままコピペをして実行すると、「フォルダ名:ID」がコンソールへ出力されます。
ソースコードでは、親フォルダが複数設定されている場合を考慮していますが、親フォルダが複数ない場合は、以下のように1行で組むことも可能です。
const folderId = folders.next().getId();