Google Apps ScriptでGoogle Driveのファイル一覧を取得する

Google Apps ScriptでGoogle Driveのファイル一覧を取得する方法です。

目次

  1. Driveのすべてのファイルを取得する
  2. 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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください