6
9

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-17

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

こんな感じ。フォルダーごとフォルダ名とURL、その配下のファイル名とURLを全部取得します。
スクリーンショット 2020-08-17 16.24.26.png

前提

  • Googleアカウントの取得

注意点

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

サンプルコード

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スプレッドシートを作成します。
スクリーンショット 2020-08-17 15.03.26.png

ヘッダー列を下記の様に設定します。
スクリーンショット 2020-08-17 15.05.43.png

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を選択
スクリーンショット 2020-08-17 15.08.48.png

新規プロジェクト画面が表示されます。
スクリーンショット 2020-08-17 15.12.27.png

プロジェクト名を変更します。
ファイル→名前を変更
スクリーンショット 2020-08-17 15.13.09.png

名前変更ダイアログ
スクリーンショット 2020-08-17 15.13.20.png

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

スクリーンショット 2020-08-17 15.13.40.png

プロジェクト名が変更されました。
スクリーンショット 2020-08-17 15.14.04.png

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

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

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

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

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

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

スクリプトプロパティを表示します。
ファイル→プロジェクトのプロパティを選択
スクリーンショット 2020-08-17 15.36.36.png

スクリプトのプロパティタブを選択
スクリーンショット 2020-08-17 15.36.55.png

行を追加を押下して、プロパティと値をセットします。
スクリーンショット 2020-08-17 15.37.31.png

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

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

関数を選択します
※関数名→fetchImageをプルダウンから選択します。
スクリーンショット 2020-08-18 10.16.38.png

実行ボタン(赤囲み部分)を押下
スクリーンショット 2020-08-18 10.20.47.png

Google認証

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

許可を確認を押下
スクリーンショット 2020-08-17 02 15.58.44.png

Googleアカウントを選択
スクリーンショット 2020-08-17 03 15.58.59.png

詳細を押下
スクリーンショット 2020-08-17 04 15.59.11.png

gas-sample-01(安全ではないページ)に移動を選択
スクリーンショット 2020-08-17 05 15.59.21.png

許可を押下
スクリーンショット 2020-08-17 07 15.59.44.png

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

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

スプレッドシートに出力されます。
スクリーンショット 2020-08-17 16.24.26.png

参考

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9