Google Apps ScriptでGoogle Driveのファイル一覧を取得する方法です。
目次
- Driveのすべてのファイルを取得する
- Driveのフォルダー内のファイルを取得する
1.Driveのすべてのファイルを取得する
DriveAppクラスのgetFiles()メソッドですべてのファイルを取得します。
getFiles()メソッドはFileIteratorクラスのオブジェクトを返します。
var files = DriveApp.getFiles();
FileIteratorクラスのオブジェクトを取得したら、hasNext()メソッドで次のFileオブジェクトがあるかどうかを確認して、next()メソッドで次のFileオブジェクトを取得します。
while (files.hasNext()) {
var file = files.next();
}
Fileオブジェクトを取得したら、getName()メソッドでファイル名を取得できます。
function getDriveFiles() {
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
}
次のコードは、ファイルの詳細な情報をスプレッドシートに出力します。
function createDriveFileList() {
var sheet = SpreadsheetApp.getActiveSheet();
var files = DriveApp.getFiles();
var row = 1;
while (files.hasNext()) {
var file = files.next();
sheet.getRange(row, 1).setValue(file.getName());
sheet.getRange(row, 2).setValue(file.getSize());
sheet.getRange(row, 3).setValue(Utilities.formatDate(file.getDateCreated(), "JST", "yyyy/MM/dd HH:mm:ss"));
sheet.getRange(row, 4).setValue(Utilities.formatDate(file.getLastUpdated(), "JST", "yyyy/MM/dd HH:mm:ss"));
sheet.getRange(row, 5).setValue(file.getDescription());
sheet.getRange(row, 6).setValue(file.getDownloadUrl());
sheet.getRange(row, 7).setValue(file.getId());
sheet.getRange(row, 8).setValue(file.getOwner().getName());
sheet.getRange(row, 9).setValue(file.getUrl());
row++;
}
}
2.Driveのフォルダー内のファイルを取得する
DriveAppクラスのgetRootFolder()メソッドはルートのフォルダーのFolderオブジェクトを返します。
Folderオブジェクトは、getFiles()メソッドでフォルダー内のファイル一覧、getFolders()メソッドでフォルダーの一覧を返します。
次のコードはルートフォルダーのフォルダーとファイルをログに出力します。
function getRootFolder() {
var rootFolder = DriveApp.getRootFolder();
var folders = rootFolder.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
Logger.log(folder.getName() + "/");
}
var files = rootFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
}
次のgetAllFiles()関数は、フォルダーとファイルの階層構造をスプレッドシートに出力します。
function getAllFiles() {
var sheet = SpreadsheetApp.getActiveSheet();
var rootFolder = DriveApp.getRootFolder();
_printFolder(sheet, 1, 1, rootFolder);
}
function _printFolder(sheet, row, col, folder) {
sheet.getRange(row, col).setValue(folder.getName() + "/");
row++;
var folders = folder.getFolders();
while (folders.hasNext()) {
var subFolder = folders.next();
row = _printFolder(sheet, row, col + 1, subFolder);
}
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
row = _printFile(sheet, row, col + 1, file);
}
return row;
}
function _printFile(sheet, row, col, file) {
sheet.getRange(row, col).setValue(file.getName());
return row + 1;
}