Google Apps Script(GAS)を使って Web アプリを開発するとき、通常は「1つのHTMLページだけ」が表示対象になります。
しかし実は、URLにパラメーターを付けることで、複数のHTMLページを切り替えることが可能です。
この記事では、GASで複数ページ表示を実現する方法と、iframe を使ったページの切り替え・変数制御テクニックをまとめました。


目次
複数ページを表示する基本構成
GASで複数のWebページを切り替えるには、doGet(e) 関数内でURLパラメーター(例:?p=menu1)を読み取り、それに応じて表示するHTMLファイルを切り替える構成にします。
Code.gs
<!DOCTYPE html>
<html>
<head><base target="_top"></head>
<body>
<h1>Indexページ</h1>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu1">Menu1</a><br>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu2">Menu2</a>
</body>
</html>ページ遷移の例
デプロイしたURLの末尾に ?p=menu1 のようにパラメータを付けることで、表示するページを切り替えます。
https://script.google.com/macros/s/プロジェクトID/exec?p=menu1HTMLファイル例
index.html
<!DOCTYPE html>
<html>
<head><base target="_top"></head>
<body>
<h1>Indexページ</h1>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu1">Menu1</a><br>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu2">Menu2</a>
</body>
</html>Menu1.html
<!DOCTYPE html>
<html>
<head><base target="_top"></head>
<body>
<h1>Menu1ページです</h1>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=index">Index へ戻る</a><br>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu1">Menu2</a><br>
</body>
</html><a href="?p=menu2"> のようにリンクすれば、同じスクリプト内でページ遷移が可能になります。
Menu2.html
<!DOCTYPE html>
<html>
<head><base target="_top"></head>
<body>
<h1>Menu1ページです</h1>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=index">Index へ戻る</a><br>
<a href="<?= ScriptApp.getService().getUrl() ?>?p=menu1">Menu1</a><br>
</body>
</html>応用│iframeで外部ページを埋め込む方法
特定のURLの中身だけを埋め込んで表示したい場合、<iframe> を使うと便利です。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<iframe src="https://cg-method.com/search?q=gas" width="256" height="256"></iframe>
</body>
</html>変数を使ってiframeのURLを動的に切り替える
HTML内で iframe の src 属性を JavaScript で後から変更することで、動的なURL切り替えが可能になります。
単純な変数
<iframe src="" id="ifr" width="256" height="256"></iframe>
<script>
var link = "https://cg-method.com/";
document.getElementById("ifr").src = link;
</script>複数のパスを組み合わせる例
<iframe src="" id="ifr" width="256" height="256"></iframe>
<script>
var link = "https://cg-method.com/";
var page = "search?q=gas";
var fullUrl = link + page;
document.getElementById("ifr").src = fullUrl;
</script>注意点
- GASのWebアプリで
iframeを使うときは、HtmlService.XFrameOptionsMode.ALLOWALLにする必要があります。 - 外部サイトによっては iframeでの埋め込みを禁止 していることがあり、その場合は表示できません(例:X-Frame-Optionsヘッダーで拒否されている)。
まとめ
| 機能 | 方法・構成 |
|---|---|
| 複数ページ表示 | doGet() + パラメータ判定 + 複数HTMLファイル |
| ページ内遷移 | <a href="?p=menu2"> で切り替え |
| iframeの埋め込み | <iframe src="URL"> |
| 変数によるURL制御 | JavaScript で src を書き換え |
Google Apps Script で簡易なマルチページ構成のWebアプリを作るなら、この方法が手軽でおすすめです。
「ページ切り替え」や「iframeによる外部データ表示」など、一歩踏み込んだGASの活用をしたい方はぜひ試してみてください。

