GASのDriveAppでファイル名・URL一覧を取得する方法

先生

GASでDriveAppを使って、ファイル名とURLの一覧を自動で取得!もう手作業でのリスト作成は不要です。

GASでファイル名・URL一覧を取得する基本

Google Apps Script(GAS)を使って、Google Drive内のファイル名とURLの一覧を取得する方法を解説します。これは、ドキュメント管理や共有状況の把握に非常に役立ちます。特に、大量のファイルを扱う場合に、手作業でのリスト作成は非効率です。GASを利用すれば、自動化が可能です。

この処理を実現するために、GASのDriveAppサービスを利用します。DriveAppはGoogle Driveを操作するための機能を提供しており、ファイルの検索、作成、更新、削除など、様々な操作を行うことができます。

function getFileList() {
  // DriveAppサービスへのアクセス
  var files = DriveApp.getFiles();

  // ファイル情報を格納する配列
  var fileList = [];

  // ファイルを順番に処理
  while (files.hasNext()) {
    var file = files.next();
    var fileName = file.getName();
    var fileUrl = file.getUrl();

    // ファイル名とURLを配列に追加
    fileList.push([fileName, fileUrl]);
  }

  // 結果をログに出力(またはスプレッドシートに出力など)
  Logger.log(fileList);
}

フォルダを指定してファイル一覧を取得

特定のフォルダ内のファイルのみを対象にしたい場合もあります。DriveApp.getFolderById(folderId)を使うことで、特定のフォルダを指定できます。folderIdは、Google DriveのフォルダのURLに含まれるIDです。

function getFileListInFolder(folderId) {
  // 指定されたIDのフォルダを取得
  var folder = DriveApp.getFolderById(folderId);
  var files = folder.getFiles();

  // ファイル情報を格納する配列
  var fileList = [];

  // ファイルを順番に処理
  while (files.hasNext()) {
    var file = files.next();
    var fileName = file.getName();
    var fileUrl = file.getUrl();

    // ファイル名とURLを配列に追加
    fileList.push([fileName, fileUrl]);
  }

  // 結果をログに出力(またはスプレッドシートに出力など)
  Logger.log(fileList);
}

上記の例では、folderId変数にフォルダのIDを設定する必要があります。フォルダIDは、ブラウザでフォルダを開いた際のURLに含まれています(例:https://drive.google.com/drive/folders/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx の部分)。

ファイル一覧をスプレッドシートに出力

取得したファイル名とURLをスプレッドシートに出力することで、より扱いやすくなります。SpreadsheetAppサービスを利用して、スプレッドシートを作成し、そこにデータを書き込みます。

function outputFileListToSpreadsheet() {
  // スプレッドシートを作成
  var spreadsheet = SpreadsheetApp.create('ファイル一覧');
  var sheet = spreadsheet.getActiveSheet();

  // ヘッダー行を追加
  sheet.appendRow(['ファイル名', 'URL']);

  // ファイル一覧を取得(ここではDriveApp.getFiles()を使用)
  var files = DriveApp.getFiles();

  // ファイル情報を格納する配列
  var fileList = [];

  // ファイルを順番に処理
  while (files.hasNext()) {
    var file = files.next();
    var fileName = file.getName();
    var fileUrl = file.getUrl();

    // ファイル名とURLを配列に追加
    fileList.push([fileName, fileUrl]);
  }

  // スプレッドシートにデータを出力
  sheet.getRange(2, 1, fileList.length, 2).setValues(fileList);
}

このコードでは、まずSpreadsheetApp.create('ファイル一覧')で新しいスプレッドシートを作成し、シート名を設定しています。次に、sheet.appendRow(['ファイル名', 'URL'])でヘッダー行を追加しています。そして、取得したファイル名とURLの配列をsheet.getRange(2, 1, fileList.length, 2).setValues(fileList)でスプレッドシートに出力しています。

既存のスプレッドシートに出力する場合は、SpreadsheetApp.openById(spreadsheetId)を使用します。spreadsheetIdは、スプレッドシートのURLに含まれるIDです。

エラーハンドリングと注意点

GASでDriveAppを扱う際には、権限設定に注意が必要です。スクリプトを実行する際には、Googleアカウントへのアクセス許可を求められます。また、ファイル数が非常に多い場合、処理に時間がかかることがあります。タイムアウトエラーが発生する可能性があるため、必要に応じて処理を分割するなどの対策を検討してください。

また、ファイルやフォルダが存在しない場合に備えて、エラーハンドリングを実装することも重要です。try...catch構文を使用することで、エラー発生時の処理を記述できます。

try {
  var folder = DriveApp.getFolderById(folderId);
} catch (e) {
  Logger.log('エラー: 指定されたフォルダが見つかりません。');
  return;
}

参考リンク

まとめ

GASのDriveAppサービスを利用することで、Google Drive内のファイル名とURLの一覧を簡単に取得し、スプレッドシートに出力することができます。この自動化により、ドキュメント管理の効率が大幅に向上します。エラーハンドリングや権限設定に注意し、GASを有効活用しましょう。