2022/02/20に更新

【GASで時短】ドライブのファイルリストをスプレッドシートに出力する

ドライブスプレッドシート

指定したGoogle ドライブのファイル一覧をスプレッドシートに出力するGoogle Apps Scriptです。最終更新日時やオーナー、URLも出力するのでフォルダ整理する時に使えるかも。

こんな悩みを解決します


  • Googleドライブにあるファイルをスプレッドシートでリストにしたいが、ファイルがたくさんあるので大変。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


指定したドライブにあるファイルを、スプレッドシート上にリストアップします。
ファイル名に加え、最終更新日時、オーナー、ファイルのURLも出力します。

使い方


1.準備

このスクリプトはA1セルを起点にファイルリストを出力します。新しいシートを作成することをおすすめします。

2.スクリプトの実行

上のメニューに有る「スクリプト実行」から「ファイル一覧を取得する」を実行します。

3.フォルダの指定

ファイルリストを取得したいGoogleドライブのフォルダのURLを入力してください。
入力できるのは1つのURLだけです。

3.結果の確認

すこし待つと一覧が出力されるはずです。スクリーンショットのメールアドレスはダミーです。

4.注意点

このスクリプトは処理が重めで、約50個のファイルがあるフォルダを指定した場合の実行時間は約10秒でした。
GASの最大実行時間(6分)を考えると、1つのフォルダに1800個以上のファイルがあると処理しきれないと思います。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00046/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('ファイル一覧を取得する', 'get_file_list_from_drive');

  // メニューを画面に追加する
  menu.addToUi();
}

function get_file_list_from_drive() {

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 対象のGoogleドライブのURLを入力させる
  const input = ui.prompt('GoogleドライブフォルダのURLを入力してください', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (input.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // フォルダのURLを取り出す
  const url = input.getResponseText();

  // フォルダURLからID部分を取得する
  const folder_id = url.replace(/^https:.*folders\//, '');

  // フォルダ内のファイルを取得する
  const files = DriveApp.getFolderById(folder_id).getFiles();

  // シート書き込み用の配列を準備
  const result = [];

  // ファイルの数だけ情報を取得する
  for (let i = 0; files.hasNext(); i++) {

    let file = files.next(); //ファイルを取得
    let filename = file.getName(); //ファイル名を取得
    let last_modified = file.getLastUpdated(); //最終更新日時を取得
    let owner = file.getOwner().getEmail(); //ファイルオーナーのメールアドレスを取得
    let file_url = file.getUrl(); //ファイルのURLを取得

    result.push([filename, last_modified, owner, file_url]); //シート書き込み用の配列に追加

  }

  result.unshift(['ファイル名', '最終更新日時', 'オーナー', 'URL']); //項目名を追加

  // 書き込む内容に応じた書き込み範囲を定義
  const range = sheet.getRange(1, 1, result.length, result[0].length);

  // シートへの書き込みを実行
  range.setValues(result);

}

関連するアプリ


【GASで時短】ファイル名に文字列を追加する

指定したフォルダ内のすべてのファイルに、プレフィックス(接頭辞)を付与するGoogle Apps Scriptです。例えばスマホで撮影した写真のファイル名に「yyyy/mm/dd 運動会_元のファイル名.jpg」のように変更することができます。

【GASで時短】ファイル名の一部を削除する

フォルダ内のすべてのファイルを対象に、ファイル名の一部を消すことが出来るGoogle Apps Scriptです。ドライブでファイルのコピーをすると「のコピー」が付与されますがこのような文字列を消すことができます。

【GASで時短】ファイル名に作成日を追加する

ファイル名の先頭にファイルの作成日を追加するGoogle Apps Scriptです。ドライブのファイル一覧で表示されるのは「最終更新日」だけで、作成日は各ファイルをクリックして右ペインを見ないとわかりません。わからないならファイル名に追加してしまおうというスクリプトです。「yyyy-mm-dd_元のファイル名」のように変えることができます。

【GASで時短】更新からN時間以上経過したファイルを削除する

最終更新日時からN時間以上経過したファイルを削除するGoogle Apps Scriptです。GASが自動的に吐き出すログファイルや、不要なファイルの一括削除に使えます。「削除」といってもゴミ箱へ移動する処理なので、誤って実行しても復元が可能です。

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp