Googleドライブに保存された画像を使って、画像付き一覧表をHTMLで自動生成したいと思ったことはありませんか?
今回は、Googleスプレッドシートを元に、GAS(Google Apps Script)で画像リストをHTML化し、ドライブやWEBアプリとして公開する方法を紹介します。

目次
スプレッドシートを作成
まず、以下のようにスプレッドシートを用意します。
- A列:名前
- B列:画像リンク(Googleドライブ画像の直接URL)
- C列:画像の参照元URL
- D列:コメントなど備考

画像リンクの形式に注意
Googleドライブの画像URLは通常このような形式です:
https://drive.google.com/open?id=xxxxxxxxx
このままでは画像として表示されないので、以下のように変換します:
https://drive.google.com/uc?export=view&id=xxxxxxxxx
uc?export=view&id=
に変えることで、<img>
タグで参照可能になります。
GAS:HTMLファイルの準備
スクリプトエディタで、HTMLファイルを2つ作成します
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>画像一覧</title>
<?!= include('css'); ?>
</head>
<body>
<table border="1">
<tr>
<th>画像</th><th>名前</th><th>備考</th>
</tr>
<? productData.forEach(function(option) { ?>
<tr>
<td><a href="<?= option[2] ?>"><img src="<?= option[1] ?>"></a></td>
<td><?= option[0] ?></td>
<td><?= option[3] ?></td>
</tr>
<? }); ?>
</table>
</body>
</html>
css.html
<style>
table {
border-collapse: collapse;
}
table th, table td {
border: solid 1px black;
}
img {
width: 150px;
height: 150px;
}
</style>
GAS:出力スクリプト(GoogleドライブにHTML保存)
function exportHTML() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
var count = sheet.getLastRow() - 1;
var html = HtmlService.createTemplateFromFile('index');
html.productData = sheet.getRange(2, 1, count, 4).getValues();
var outputFolder = DriveApp.getFolderById("出力先のドライブID");
var date = new Date();
outputFolder.createFile("画像一覧_" + Utilities.formatDate(date, "Asia/Tokyo", "yyMMdd"), html.evaluate().getContent(), MimeType.HTML);
}
さらに、メニューからスクリプトを呼び出す処理も追加します:
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.addMenu("HTMLファイル出力", [
{name : "HTMLファイル出力", functionName : "exportHTML"}
]);
}
表示例(HTML Viewer)
出力されたHTMLはドライブ上で確認可能です。
「HTML Viewer」で開けば、表形式で画像リストを閲覧できます。

WEBアプリとして公開したい場合
1. CSSはHTMLに直接書く(インクルード不要)
<head>
<style>
table { border-collapse: collapse; }
table th, table td { border: solid 1px black; }
img { width: 150px; height: 150px; }
</style>
</head>
2. doGet() を追加
function doGet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
var count = sheet.getLastRow() - 1;
var html = HtmlService.createTemplateFromFile('index');
html.productData = sheet.getRange(2, 1, count, 4).getValues();
return html.evaluate();
}
3. 公開 > ウェブアプリケーションとして導入
- 初回アクセスには承認が必要
- 公開URLを共有すれば誰でも閲覧可能
実行結果
最終的に、以下のような画像一覧表がHTMLとして出力されます:

まとめ
- スプレッドシートを元にHTML画像一覧を作成可能
- GAS+ドライブ+HTMLの組み合わせで自動生成も可能
uc?export=view
に変換することで画像埋め込み可能
改良次第で「商品カタログ」「イラスト一覧」などにも応用可能です!
GASでのHTML生成についての他の記事もぜひご覧ください。