Amazonで商品を見るセール会場へ

Googleドライブ│フォルダ内のファイルURLを一括取得して出力する方法

Googleドライブで多数のファイルを管理していると、各ファイルの共有リンクを個別にコピーする手間に悩まされるケースがあります。

ファイル一覧とURLを短時間で整理したい場合は、Google Apps Script(GAS)を使った自動取得が有効です。

本記事では、フォルダ内のファイル名とURLを一括でスプレッドシートに出力する手順を解説します。

Googleドライブのフォルダ内にあるファイル名とURLを一括取得し、スプレッドシートへ出力した結果の画面。
目次

基本:フォルダ内のファイル名とURLを取得するコード

function getFileListInFolder() {
  const folderId = 'フォルダID';
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (!ss) throw new Error('スプレッドシートから開いたApps Scriptで実行してください');
  const sheet = ss.getSheetByName('シート1');
  if (!sheet) throw new Error('出力先のシート1がありません');
  const files = DriveApp.getFolderById(folderId).getFiles();
  const rows = [];
  while (files.hasNext()) {
    const file = files.next();
    const name = file.getName();
    rows.push([name.startsWith('=') ? "'" + name : name, file.getUrl()]);
  }
  if (!rows.length) {
    Logger.log('対象フォルダ直下にファイルがありません');
    return;
  }
  sheet.getRange(2, 1, rows.length, 2).setValues(rows);
}
  • 使い方:フォルダID を対象のIDへ書き換えてスクリプトを実行すると、該当フォルダ内のファイル名とURLがスプレッドシートへ出力されます。

旧コード参考:画像URLの文字列変換

Googleドライブの通常の共有URLは、そのままでは <img> で画像を直接読み込めません。

以下は過去のURL形式を前提とした参考コードで、現在の画像配信用としては推奨しません。

文字列を置き換えるだけでは、権限や画像の配信方法は変わりません。

function getFileListInFolder() {
  var url = 'https://drive.google.com/drive/folders/フォルダID';
  var folderId = url.split('/').pop();
  var folder = DriveApp.getFolderById(folderId);
  var files = folder.getFiles();
  var list = [];

  while (files.hasNext()) {
    var file = files.next();   
    var imageUrl = file.getUrl();
    imageUrl = imageUrl.replace("file/d/", "uc?export=view&id=");
    imageUrl = imageUrl.replace("/view?usp=drivesdk", "");
    list.push([file.getName(), imageUrl]);
  }

  var sheet = SpreadsheetApp.getActive().getSheetByName("シート1");
  var range = sheet.getRange(2, 1, list.length, list[0].length);
  range.setValues(list);
}

画像公開には、公開対象の画像だけをWebサイトのメディア機能などへアップロードして使用してください。

このコードのために非公開ファイルの共有範囲を広げる必要はありません。

旧コード参考として紹介されている、フォルダIDを直接指定して画像URLを変換する関数の記述例。

旧コード参考:フォルダIDを直接指定する画像URL変換

function getFileListInFolder() {
  var folderId = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; // フォルダIDを直接記入
  var files = DriveApp.getFolderById(folderId).getFiles(); 
  var list = [];

  while (files.hasNext()) {
    var file = files.next();   
    var imageUrl = file.getUrl();
    imageUrl = imageUrl.replace("file/d/", "uc?export=view&id=");
    imageUrl = imageUrl.replace("/view?usp=drivesdk", "");
    list.push([file.getName(), imageUrl]);
  }

  var sheet = SpreadsheetApp.getActive().getSheetByName("シート1");
  var range = sheet.getRange(2, 1, list.length, list[0].length);
  range.setValues(list);
}

URLからIDを抽出する処理を挟みたくない場合は、フォルダIDを直接指定する書き方が簡潔です。

応用③:サブフォルダ内のファイルも含めて再帰的に取得する

基本のスクリプトでは、指定した最上位フォルダの直下にあるファイルのみを対象とします。

階層構造の下にあるサブフォルダまで巡回して一覧化したい場合は、サブフォルダを検知するごとに同じ処理を呼び出す再帰処理を実装します。

階層関係が把握しやすいよう、種別・名称・URLの3列でフォルダとファイルが階層順に出力されます。

function makeList() {
  const folder_id = "フォルダID"; // リスト化したいフォルダのID

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet_id = ss.getId();
  const sheet_name = ss.getSheets()[0].getName();

  const folder = DriveApp.getFolderById(folder_id);

  appendLogToSpreadsheet(['種類', '名前', 'URL'], sheet_id, sheet_name);

  function getAllFolder(f) {
    const folders = f.getFolders();
    while (folders.hasNext()) {
      const subFolder = folders.next();
      appendLogToSpreadsheet(['フォルダ', subFolder.getName(), subFolder.getUrl()], sheet_id, sheet_name);
      getAllFile(subFolder);
      getAllFolder(subFolder);
    }
  }

  function getAllFile(f) {
    const files = f.getFiles();
    while (files.hasNext()) {
      const file = files.next();
      appendLogToSpreadsheet([' └ ファイル', file.getName(), file.getUrl()], sheet_id, sheet_name);
    }
  }

  getAllFile(folder);
  getAllFolder(folder);
}

function appendLogToSpreadsheet(log, sheetId, sheetName) {
  const spreadSheet = SpreadsheetApp.openById(sheetId);
  spreadSheet.getSheetByName(sheetName).appendRow([log[0], log[1], log[2]]);
  SpreadsheetApp.flush();
}

共有フォルダの構成確認や、格納状況をチームに共有・棚卸しする際に役立ちます。

Googleドライブのファイルやフォルダを扱う記事は、ほかにもあります。

まとめ

  • Google Apps Scriptを利用することで、対象フォルダ内のファイル情報を一括取得してスプレッドシートへ出力できる
  • ファイルを開くURLと <img> 用の画像配信URLは別であり、旧変換コードは表示を保証しない
  • サブフォルダの再帰処理を組み合わせることで階層内の全ファイルを一覧化できる

ファイル一覧表や素材管理シートなど、ドライブ上のデータ整理に合わせてカスタマイズできます。

用途に応じてスクリプトを調整し、日常のファイル管理作業を効率化してください。

関連記事はGoogleスプレッドシート・ドライブの使い方まとめでまとめています。

さらに学びたい・環境を整えたい方へ

本記事の手順を実施したあと、スプレッドシートやGASを体系的に学びたい方に向けた参考情報です。

目的に合った内容が含まれているか目次等を確認のうえ活用してください。

秀和システム
¥2,860 (2026/09/17 17:34時点 | Amazon調べ)
\Amazonで商品を見る/
Amazon
\楽天セール開催中!ポイント最大11倍!/
楽天市場
\Yahoo!ショッピングで商品を見る/
Yahooショッピング

新しい空のスプレッドシートに「シート1」を作り、「拡張機能」からApps Scriptを開いて基本コードを実行します。

A2以降の2列は上書きされるため、既存データのないシートで試してください。

基本コードはフォルダ直下だけを対象にします。

再実行で件数が減っても以前の余った行は消さないので、毎回空の出力先を用意してください。

URLを取得しても、ファイルの共有権限は変更されません。

旧コードは空フォルダや共有URLの形式の違いでエラーになる場合があります。

同じ関数名のコードを複数貼らず、通常の一覧作成には冒頭の基本コードを使ってください。

再帰版は先頭シートの末尾に追記するため、再実行すると見出しと結果が重複します。

1行ずつ書き込む構成で、大量ファイルでは実行時間の上限に達する場合があります。

途中再開やショートカット先の巡回は実装していません。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次