MENU
  • WEB制作・開発
    • 学習・挑戦記Web制作に関連する情報
    • 技術MEMO
    • セキュリティ
  • IT TOOL一覧
    • ECサイトIT TOOL ECサイト
    • アピス在庫管理
    • クラウドファンディング
    • セルフオーダーシステム
    • レッスン施術サービスレッスン施術サービス予約サイト
    • シンプルクラウドソーシング
    • 会議室予約
    • ShopifyShopifyに関連する設定などさまざまな投稿をしていきます。
  • 在庫管理
  • ビジネス支援ツール
    • Canva
    • WordPressWordpressのサイト構築あれこれ!
    • ZOOM
    • エクセル・ワード
    • バーコード
  • このブランドはどこの国?|
  • テクノロジー・トレンド
  • お知らせ
  • IT導入補助金
  • イヤホン
  • スマホ・PC・タブレット
  • SEO・ブログ運営
  • アクセス解析
  • ブログ運営
  • ブログ収益化
  • プロンプト
  • PC関連ネットで販売するPC関連商品の説明
技術が生活を楽にする
tecn
    • WEB制作・開発
      • 学習・挑戦記Web制作に関連する情報
      • 技術MEMO
      • セキュリティ
    • IT TOOL一覧
      • ECサイトIT TOOL ECサイト
      • アピス在庫管理
      • クラウドファンディング
      • セルフオーダーシステム
      • レッスン施術サービスレッスン施術サービス予約サイト
      • シンプルクラウドソーシング
      • 会議室予約
      • ShopifyShopifyに関連する設定などさまざまな投稿をしていきます。
    • 在庫管理
    • ビジネス支援ツール
      • Canva
      • WordPressWordpressのサイト構築あれこれ!
      • ZOOM
      • エクセル・ワード
      • バーコード
    • このブランドはどこの国?|
    • テクノロジー・トレンド
    • お知らせ
    • IT導入補助金
    • イヤホン
    • スマホ・PC・タブレット
    • SEO・ブログ運営
    • アクセス解析
    • ブログ運営
    • ブログ収益化
    • プロンプト
    • PC関連ネットで販売するPC関連商品の説明
tecn
    • WEB制作・開発
      • 学習・挑戦記Web制作に関連する情報
      • 技術MEMO
      • セキュリティ
    • IT TOOL一覧
      • ECサイトIT TOOL ECサイト
      • アピス在庫管理
      • クラウドファンディング
      • セルフオーダーシステム
      • レッスン施術サービスレッスン施術サービス予約サイト
      • シンプルクラウドソーシング
      • 会議室予約
      • ShopifyShopifyに関連する設定などさまざまな投稿をしていきます。
    • 在庫管理
    • ビジネス支援ツール
      • Canva
      • WordPressWordpressのサイト構築あれこれ!
      • ZOOM
      • エクセル・ワード
      • バーコード
    • このブランドはどこの国?|
    • テクノロジー・トレンド
    • お知らせ
    • IT導入補助金
    • イヤホン
    • スマホ・PC・タブレット
    • SEO・ブログ運営
    • アクセス解析
    • ブログ運営
    • ブログ収益化
    • プロンプト
    • PC関連ネットで販売するPC関連商品の説明
  1. ホーム
  2. WEB制作・開発
  3. 学習・挑戦記
  4. GASで作るWebアプリケーション入門 初心者でもわかるHTML Serviceの設計と作り方 |

GASで作るWebアプリケーション入門 初心者でもわかるHTML Serviceの設計と作り方 |

2026 4/08
WEB制作・開発 学習・挑戦記 未分類
2026年4月8日

Google Apps Script(GAS)でWebアプリケーションを作るなら、最初に知っておきたいのは「普通のWebサイトとまったく同じ感覚では作らないほうがうまくいく」という点です。
Apps Script の HTML Service はHTML5ベースで画面を作れますが、実行環境は IFRAME サンドボックスで動くため、画面遷移や外部リソースの扱いにいくつか制約があります。

そのため、初心者がGASで見た目のよい業務Webアプリを作るなら、1つの親HTMLをベースに、画面の中身だけを切り替えるSPA風の構成にするのが最も現実的です。
この記事では、GASでWebアプリっぽく作るための考え方、ファイル構成、実装の流れ、初心者がハマりやすいポイントまでまとめます。

目次

記事タイトル案

用途に合わせて、次のようなタイトルが使えます。

  • GASで作るWebアプリケーション入門 初心者でもわかるHTML Serviceの設計と作り方
  • Google Apps Scriptで業務Webアプリを作る方法 HTML Serviceを使った実践設計
  • GASで管理画面を作りたい人へ SPA風Webアプリの作り方と設計のコツ
  • Google Apps ScriptのHTML ServiceでWebアプリ化する方法 初心者向け設計ガイド
  • GASで“ちゃんとした画面”を作るには? HTML ServiceとSPA構成の基本

なぜ普通のWeb制作と少し違うのか

GASの HTML Service では、HTML・CSS・クライアント側JavaScriptを書いてWeb画面を作れます。​
ただし、Apps Script のWebアプリは IFRAME サンドボックスで動作するため、トップレベルナビゲーションやリンク遷移、外部ファイルの読み込みなどに通常のWebアプリとは異なる制限があります。

Google の公式ドキュメントでも、HTML・CSS・JavaScriptは分けて管理し、テンプレート側では重いデータ処理をしすぎず、データは google.script.run で非同期に取得する方法が推奨されています。​
つまり、GASで見た目の整った業務アプリを作るなら、サーバ側のApps Scriptとフロント側のHTMLを役割分担して考えるのが重要です。

結論は「SPA風構成」が一番作りやすい

初心者がまず結論として押さえたいのは、画面ごとに別HTMLへ遷移するより、1つのHTMLの中で表示を切り替えるほうが作りやすいということです。
理由は、GASでは doGet() ごとにページを分けるより、共通レイアウトを1枚持ち、必要なデータだけを非同期取得して差し替えるほうが、保守性と拡張性のバランスがよいからです。

たとえば、商品管理システムなら、以下のような画面を1つのアプリ内で切り替えます。

  • 商品一覧
  • 商品登録
  • 商品編集
  • 在庫照会
  • 設定画面

この切り替えをブラウザの完全なページ遷移ではなく、メインエリアのDOM差し替えで行う考え方が、SPA風構成です。
GASではこの方式が特に相性がよく、見た目も最近のWebアプリに近づけやすくなります。

おすすめのファイル構成

GASで効率よく作るなら、ファイルは「ページ単位」ではなく「役割単位」で分けるのがおすすめです。

ファイル役割
Code.gsdoGet()、データ取得、保存、更新、削除などのサーバ処理 
Index.html親画面、共通レイアウト、表示エリアの土台 
css.html画面デザイン、レイアウト、部品の見た目 ​
js.html画面切替、イベント処理、状態管理、google.script.run 呼び出し ​
header.html sidebar.html共通部品のテンプレート化 ​
view-list.html view-edit.html一覧や編集などの部分ビュー ​

この構成のポイントは、**ファイルを分ける目的が「遷移」ではなく「整理」**であることです。
初心者ほど「商品一覧.html」「商品登録.html」へ飛ばす形を考えがちですが、GASではそのやり方より、部品化しながら1画面で制御するほうが結果的に楽です。

基本の考え方は「GASをAPIのように使う」

GAS側は、画面そのものをたくさん返す役割ではなく、データの取得や保存を担当するバックエンドとして使うと整理しやすくなります。
たとえば、次のように関数を分けます。

  • getProducts() 商品一覧を返す
  • getProductById(id) 商品詳細を返す
  • saveProduct(data) 商品を登録する
  • updateProduct(data) 商品を更新する
  • deleteProduct(id) 商品を削除する

このようにしておけば、フロント側から google.script.run で関数を呼ぶだけで済みます。​
その結果、見た目の変更と業務ロジックの変更を分離しやすくなり、記事読者にも理解してもらいやすい設計になります。

初期表示は軽く、データはあとから読む

GoogleのHTML Serviceのベストプラクティスでは、テンプレート内に大量のデータを直接埋め込むより、最初に軽い画面だけ表示し、そのあと非同期でデータを取る方法が推奨されています。​
これは表示速度だけでなく、ローディング表示やエラー表示を入れやすいという利点もあります。​

たとえば商品一覧画面なら、最初は「読み込み中…」だけ表示しておき、google.script.run.withSuccessHandler(...) で一覧データを受け取ってから描画します。​
この流れにしておくと、将来データ件数が増えても比較的破綻しにくくなります。​

画面遷移はどう考えるべきか

GASでWebアプリを作るときの「画面遷移」は、厳密にはWebサイトのページ遷移というより、アプリ内ビュー切替として考えるのが自然です。
つまり、サイドバーを押したら別ページに行くのではなく、中央の表示領域だけ「商品一覧」から「商品登録」に変わるイメージです。​

この方式なら、ヘッダーやサイドバーを毎回作り直さなくて済みますし、画面間で状態を持ちやすくなります。​
たとえば「一覧で選んだ商品IDを編集画面へ渡す」といった制御も、SPA風の設計ならシンプルに実装できます。

テンプレートの include を活用する

Apps Script ではテンプレートHTMLを使って、別ファイルのHTMLを読み込む形で部品化できます。​
この仕組みを使うと、ヘッダー、サイドメニュー、CSS、JavaScriptなどを分離しやすくなります。

特に初心者には、次のような include() 関数を用意しておく方法がわかりやすいです。​

javascriptfunction include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
}

そして Index.html の中で次のように読み込みます。​

xml<?!= include('css'); ?>
<?!= include('header'); ?>
<?!= include('sidebar'); ?>
<?!= include('js'); ?>

この書き方を覚えるだけでも、GASのHTML開発はかなり整理しやすくなります。

初心者向けの最小構成サンプル

以下は、GASでSPA風に作るときの最小構成イメージです。これは考え方をつかむためのサンプルです。

Code.gs

javascriptfunction doGet() {
  return HtmlService.createTemplateFromFile('Index')
    .evaluate()
    .setTitle('商品管理アプリ');
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
}

function getProducts() {
  return [
    { id: 'P001', name: 'ノートPC' },
    { id: 'P002', name: 'バーコードリーダー' }
  ];
}

function getProductById(id) {
  return { id: id, name: 'バーコードリーダー', price: 4980 };
}

function saveProduct(data) {
  return { success: true, message: '保存しました' };
}

Index.html

xml<!DOCTYPE html>
<html>
<head>
  <base target="_top">
  <?!= include('css'); ?>
</head>
<body>
  <div class="app-layout">
    <aside class="sidebar">
      <button onclick="navigate('list')">商品一覧</button>
      <button onclick="navigate('create')">商品登録</button>
    </aside>
    <main id="app"></main>
  </div>
  <?!= include('js'); ?>
</body>
</html>

js.html

xml<script>
const state = {
  view: 'list',
  currentId: null
};

function navigate(view, id = null) {
  state.view = view;
  state.currentId = id;
  render();
}

function render() {
  const app = document.getElementById('app');

  if (state.view === 'list') {
    app.innerHTML = '<h2>商品一覧</h2><div id="list-area">読み込み中...</div>';
    google.script.run.withSuccessHandler(rows => {
      document.getElementById('list-area').innerHTML = rows.map(r =>
        `<div><button onclick="navigate('edit', '${r.id}')">${r.id} - ${r.name}</button></div>`
      ).join('');
    }).getProducts();
  }

  if (state.view === 'create') {
    app.innerHTML = `
      <h2>商品登録</h2>
      <input id="product-name" placeholder="商品名">
      <button onclick="saveNew()">保存</button>
    `;
  }

  if (state.view === 'edit') {
    app.innerHTML = '<h2>商品編集</h2><div id="edit-area">読み込み中...</div>';
    google.script.run.withSuccessHandler(data => {
      document.getElementById('edit-area').innerHTML = `
        <input id="edit-name" value="${data.name}">
        <button onclick="saveEdit('${data.id}')">更新</button>
      `;
    }).getProductById(state.currentId);
  }
}

window.addEventListener('DOMContentLoaded', render);
</script>

この構成のよいところは、読者が「GASでもWebアプリっぽく作れる」と具体的にイメージしやすい点です。
しかも、一覧・登録・編集という業務システムでよく使う流れを、そのまま別テーマへ展開できます。

デザインを入れたいときの考え方

GASのHTML Serviceでも、通常のHTML/CSS/JavaScriptのかなりの部分は使えます。​
ただし、Apps Script の制約を考えると、最初から大規模なフロントエンドフレームワークを持ち込むより、まずは素のHTML・CSS・JavaScriptで整理された管理画面を作るほうが安定しやすいです。

見た目を整えるコツは、次の3点です。

  • ヘッダー・サイドバー・メインエリアの3分割レイアウトにする
  • ボタン、フォーム、カード、テーブルの見た目を部品化する
  • 画面ごとにHTMLを増やすより、CSSクラスを共通化する

Googleのベストプラクティスでも、HTML・CSS・JavaScriptを分けることで可読性と保守性が上がると案内されています。​
そのため、初心者向けの記事でも「まずはデザインライブラリより、構造を整理することが先」と説明すると実践的です。​

制約があるからこそ、設計をシンプルにする

GASのHTML Serviceには、通常のWebアプリと比べていくつかの制限があります。
たとえば、サンドボックスの都合でトップレベルの自由な遷移には注意が必要ですし、外部リソースはHTTPSで読む必要があります。

ですが、これは悲観するポイントではありません。​
むしろ「1画面アプリとして整理する」「サーバ処理は関数単位に分ける」「見た目は共通パーツ化する」と割り切ることで、初心者でも十分に実用的な業務アプリを構築できます。

初心者がハマりやすい失敗

1. 画面ごとにHTMLを完全分離してしまう

一見わかりやすそうですが、共通レイアウトの修正が増え、状態管理もしづらくなります。
特に一覧から編集へ渡すデータや、戻る操作の整理が面倒になりやすいです。

2. テンプレートに大量データを埋め込んでしまう

初期表示が重くなりやすく、画面の応答性も悪くなります。​
Googleはデータを google.script.run で非同期読み込みする形を推奨しています。​

3. GAS側とフロント側の責務が混ざる

画面制御まで全部 Code.gs に寄せると、あとで修正がつらくなります。
「表示の切替はフロント」「データ処理はGAS」と分けるだけでかなり整理されます。​

4. いきなり複雑な構成を目指す

最初から多機能なルーターや重い構成にすると、GASの良さである手軽さを失いやすいです。
最初は一覧・登録・編集の3画面だけをSPA風にまとめる構成がちょうどよいスタートです。​

これから作るなら、どこから始めるべきか

初心者なら、まずは次の順番で作るのがおすすめです。

  1. doGet() で Index.html を返すところまで作る。
  2. サイドバーとメインエリアだけの管理画面レイアウトを作る。
  3. navigate('list') のような簡単な表示切替を作る。
  4. google.script.run で一覧取得をつなぐ。​
  5. 商品登録フォームを追加し、保存処理をつなぐ。
  6. 商品編集画面を追加し、ID受け渡しと更新処理をつなぐ。
  7. 最後にCSSを整えて、Webアプリらしい見た目に仕上げる。​

この順序で進めれば、見た目とロジックを同時に壊しにくく、記事としても読みやすい構成になります。

まとめ

GASでWebアプリケーションを作るときは、普通のWebサイトの延長として考えるより、HTML Service上で動く小さな業務アプリを設計するという発想が向いています。
そのうえで、親HTMLを1つにまとめ、画面はSPA風に切り替え、データ処理は google.script.run に任せる構成にすると、初心者でも実務に使える形へ持っていきやすくなります。

特に、一覧・登録・編集のような管理画面系システムでは、この考え方が非常に相性がよいです。​
「HTMLファイルをページごとに増やす」のではなく、「共通部品とビューに分けて整理する」と考えるだけで、GASのWebアプリ開発はかなり進めやすくなります。

プロフィール DXジュン

DXジュン プロフィール写真 ```

筆者プロフィール|DXジュン(Apice Technology 代表)

```

「tecn」を運営している DXジュン です。
Apice Technology株式会社の代表として、20年以上にわたり Web制作・業務システム開発・業務改善支援に携わっています。

普段は中小企業向けに、在庫管理・予約管理・受発注管理など、 業務を効率化するためのシステム開発やDX支援を行っています。

tecnでは、業務改善のヒントやWebシステムの仕組み、 「技術が暮らしを少し便利で楽しくする」をテーマに、 現場目線で分かりやすく情報発信しています。

最近は在庫管理のDX化に力を入れており、 SKU・JAN・棚卸・バーコード運用など、 現場で役立つ実践的なノウハウを発信しています。

また、小規模事業者向けの無料ツール 「アピスminiシリーズ」も公開しています。

```

業務改善に役立つ無料ツールや在庫管理システムを公開しています

無料在庫管理システムを見る アピスminiシリーズを見る ```

🔗 Apice Technology(会社HP)
🔗 音を楽しむ【耳スタ】
🔗 在庫管理システムの機能紹介

記事が皆さまの仕事や日常のヒントになれば幸いです。

WEB制作・開発 学習・挑戦記 未分類
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • システムのリファレンスマニュアルの書き方 |WORDPRESS
  • 2026〜2027年 Bluetooth高音質ロードマップ技術編:LE Audio・LC3・標準ロスレス・Auracastで何が変わるのか

関連記事

  • PC操作を動画にする OBS Studio Windows11 設定手順
    2026年6月12日
  • 商品マスターの管理と活用
    商品マスターの項目一覧とは?在庫管理で最低限決めるべき基本項目を解説| SKU
    2026年6月10日
  • Tineco はどこの国 
    Tinecoはどこの国のメーカー?中国発の高性能掃除機ブランドをわかりやすく解説
    2026年6月10日
  • どこの国 Dyson 掃除機
    Dysonはどこの国のメーカーですか?|信頼性と人気モデルを解説 掃除機編
    2026年6月9日
  • TECN内部リンク抽出GAS  V0.3 仕様書
    2026年6月6日
  • AI時代の安全なシステム開発とは?~機密情報を守りながら生産性を高める開発体制の考え方~
    2026年6月4日
  • TECN内部リンク抽出GAS 仕様書 V0.2
    2026年6月4日
  • 保護中: japanparts.com 様 データベースサーバ更改ご提案書(パイロット版)
    2026年6月3日

コメント

コメントする コメントをキャンセル

アピス在庫管理システム
アピス在庫管理導入講座

カテゴリー

  • AIに対してのプロンプト
  • Bluetoothコーデック基礎
  • Chrome ブラウザー
  • Dropbox
  • ECサイト
  • IT TOOL一覧
  • IT導入補助金
  • LDAC-Bluetooth
  • mini:GAS仕様 設定手順等
  • OBS-Studio
  • PC関連
  • SEO・ブログ運営
  • Shopify
  • SKU・JAN・商品コード
  • STEPmini
  • WEB制作・開発
  • Windows
  • WordPress
  • ZOOM
  • アクセス解析
  • アピスmini・IT-Tool
  • アピス在庫管理
  • イヤホン
  • エクセル・ワード
  • お知らせ
  • セキュリティ
  • セルフオーダーシステム
  • どこの国・ブランド
  • ネットで販売
  • バーコード
  • ビジネス支援ツール
  • ブログ
  • ブログ収益化
  • ブログ運営
  • プロンプト
  • レッスン施術サービス
  • 会議室予約
  • 充電器・バッテリー
  • 回線・インターネット
  • 在庫管理
  • 学習・挑戦記
  • 家事代行予約
  • 家電ガジェット
  • 技術MEMO
  • 接続&音質トラブル
  • 政治・経済
  • 時事・経済・グローバル
  • 未分類
  • 業務効率化
  • 画像生成AI
  • 端末別設定
  • 美容院予約
  • 見積
  • 見積管理
  • 請求管理
  • 電気自動車(EV)

最近の投稿

  • PC操作を動画にする OBS Studio Windows11 設定手順
  • 商品マスターの項目一覧とは?在庫管理で最低限決めるべき基本項目を解説| SKU
  • Tinecoはどこの国のメーカー?中国発の高性能掃除機ブランドをわかりやすく解説
  • Dysonはどこの国のメーカーですか?|信頼性と人気モデルを解説 掃除機編
  • TECN内部リンク抽出GAS  V0.3 仕様書

アーカイブ

  • 2026年6月
  • 2026年5月
  • 2026年4月
  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月

APICE

問い合わせ

アピステクノロジー|tec note

 〒224-0032 神奈川県横浜市都筑区茅ケ崎中央42−21 第2佐藤ビル 203

電話番号: 045-532-4480

お問い合せ

© tecn.

目次