Googleドライブのフォルダ名とファイル名、URLをスプレッドシートに出力する


Googleドライブの特定のフォルダ配下のフォルダ名とファイル名、URLをGoogleスプレッドシートに出力するサンプルです。
フォルダ配下にさらにフォルダがある場合は、全てのフォルダを再帰処理します。

こんな感じ。フォルダーごとフォルダ名とURL、その配下のファイル名とURLを全部取得します。

前提

  • Googleアカウントの取得

注意点

複数のGoogleアカウントでログインされている場合は、一度全てログアウトして、実行対象のGoogleドライブのアカウントにて再度ログインしてください。

サンプルコード

function fetchImage() {

  // 環境変数のセット
  const scriptProperties = PropertiesService.getScriptProperties();
  const SHEET_ID = scriptProperties.getProperty('SHEET_ID'); // SpreadSheet ID
  const SpreadSheetObj = SpreadsheetApp.openById(SHEET_ID);
  const FOLDER_ID = scriptProperties.getProperty('FOLDER_ID'); // Googleドライブフォルダー ID
  const folder = DriveApp.getFolderById(FOLDER_ID);
  // const folder = DriveApp.getRootFolder(); // ルートフォルダ配下を取得する場合はこちら
  console.log(folder.getName()); // 開始フォルダー

  // 特定のフォルダー配下のフォルダ名とURL、サイズを表示する
  function getAllFolder(f) {
    const folders = f.getFolders();
    while (folders.hasNext()) {
      const subFolder = folders.next();
      console.log(subFolder.getName());
      console.log(subFolder.getName(), subFolder.getUrl(), subFolder.getSize());
      appendLogToSpreadsheet(['Folder' ,subFolder.getName(), subFolder.getUrl(), subFolder.getSize()], SHEET_ID, 'シート1');
      getAllFile(subFolder);
      getAllFolder(subFolder);
    }
  }
  getAllFolder(folder);

  // フォルダー配下のファイル名とURL、サイズを表示する
  function getAllFile(f) {
    const files = f.getFiles();
    const listOfFiles = [];
    while (files.hasNext()) {
      const file = files.next();
      console.log(file.getName(), file.getUrl(), file.getSize());
      appendLogToSpreadsheet(['---file', file.getName(), file.getUrl(), file.getSize()], SHEET_ID, 'シート1');
    }
  }

}

// スプレッドシートにログを書き出す
function appendLogToSpreadsheet(log, sheetId, sheetName) {
    if (sheetName === void 0) { sheetName = 'sheet1'; }
    var spreadSheet = SpreadsheetApp.openById(sheetId);
    spreadSheet.getSheetByName(sheetName).appendRow([new Date(), log[0], log[1], log[2], log[3]]);
    SpreadsheetApp.flush();
}

利用方法

  1. Googleドライブの探索対象の先頭フォルダのIDをメモします。
  2. フォルダ名、ファイル名、URLをリスト出力するスプレッドシートを作成します。
  3. 新規 Google Apps Scriptプロジェクトを作成します。
  4. ファイルにサンプルコードをコピーします。
  5. プロジェクトのスクリプトプロパティにプログラム内で利用する環境変数を設定します。
  6. プログラムを実行します。
  7. スプレッドシートを確認します。

説明

1. Googleドライブの探索対象の先頭フォルダのIDをメモします。

後ほど環境変数にセットする為に、GoogleドライブのフォルダのIDをメモしておきます。
フォルダIDは、対象フォルダに移動した際のURLの下記の部分です。

https://drive.google.com/drive/folders/{フォルダーID}

※{フォルダーID}の{}の部分は除いてください。

2. フォルダ名、ファイル名、URLをリスト出力するスプレッドシートを作成します。

Googleドライブにて、新規にGoogleスプレッドシートを作成します。

ヘッダー列を下記の様に設定します。

1 2 3 4 5
日付 区分 名称 URL サイズ

区分にはフォルダーorファイルの区分、名称にはフォルダorファイルの名称がセットされます。

後ほど環境変数にセットする為に、スプレッドシートのIDをメモしておきます。
スプレッドシートIDは、スプレッドシートのURLの下記の部分です。

https://docs.google.com/spreadsheets/d/{スプレッドシートID}/edit#gid=0

※{スプレッドシートID}の{}の部分は除いてください。

3. 新規 Google Apps Scriptプロジェクトを作成します。

Googleドライブにて、新規にGoogle Apps Scriptプロジェクトを作成します。
※その他→Google Apps Scriptを選択

新規プロジェクト画面が表示されます。

プロジェクト名を変更します。
ファイル→名前を変更

名前変更ダイアログ

名前を変更してOK押下します。
gas-sample-01

プロジェクト名が変更されました。

4. ファイルにサンプルコードをコピーします。

function myFunction() {
}
部分を前段のサンプルコードで置き換えます。

置き換えたら保存してください。
※ファイル→保存を選択

5. プロジェクトのスクリプトプロパティにプログラム内で利用する環境変数を設定します。

前段の1.と2.でメモした、フォルダーIDとスプレッドシートIDを下記の様に設定します。
※{}の記号は入れないでください。

プロパティ
FOLDER_ID {フォルダーID}
SHEET_ID {スプレッドシートID}

スクリプトプロパティを表示します。
ファイル→プロジェクトのプロパティを選択

スクリプトのプロパティタブを選択

行を追加を押下して、プロパティと値をセットします。

最後に保存ボタンを押下します。

6. プログラムを実行します。

関数を選択します
※関数名→fetchImageをプルダウンから選択します。

実行ボタン(赤囲み部分)を押下

Google認証

初回は認証が必要になります

許可を確認を押下

Googleアカウントを選択

詳細を押下

gas-sample-01(安全ではないページ)に移動を選択

許可を押下

実行が終了するまでしばらく待ちます。

7. スプレッドシートを確認します。

スプレッドシートに出力されます。

参考