Googleドライブで多数のファイルを扱っていると、「共有リンクをいちいち開いてコピーするのが面倒」と思ったことはありませんか?
そんなときに便利なのがGoogle Apps Script(GAS)での自動URL取得です。今回は、ドライブ内のファイル名とURLを一括でスプレッドシートに出力する方法を紹介します。

目次
基本:フォルダ内のファイル名とURLを取得するコード
function getFileListInFolder() {
var url = 'https://drive.google.com/drive/folders/フォルダID';
var paths = url.split('/');
var folderId = paths.pop();
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();
var list = [];
var rowIndex = 2; // 2行目から
var colIndex = 1;
var sheetName = 'シート1';
while (files.hasNext()) {
var file = files.next();
list.push([file.getName(), file.getUrl()]);
}
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
var range = sheet.getRange(rowIndex, colIndex, list.length, list[0].length);
range.setValues(list);
}- 使い方:
フォルダ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);
}この形式で出力すると、HTMLやWebアプリに画像を表示しやすくなります。

応用②:URL入力を使わずフォルダIDを直入力するバージョン
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分解の手間を省きたい場合は、こちらの方がシンプルです。
応用③:サブフォルダも含めて一覧にする
ここまでの方法は、指定したフォルダの直下しか見ません。
中にあるフォルダの中まで全部たどりたい場合は、フォルダを見つけるたびに同じ処理を繰り返す形にします。
種類・名前・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 Apps Scriptを使えば、ドライブフォルダ内のファイルURLを一括取得してスプレッドシートに出力できる
- URLを直接
<img>タグで表示できる形式に変換することも可能 - スプレッドシートで画像リストや資料リンク集を自動生成する際に便利
画像ギャラリー・作品一覧・リンク集など、あらゆるファイル管理に活用できます。
業務の効率化や資料作成にぜひ取り入れてみてください!
ほかの記事はGoogleスプレッドシート・ドライブの使い方まとめからご覧いただけます。

