Google Apps Scriptで社内ポータルサイトを1日で作った話

Google Apps Scriptで社内ポータルサイトを1日で作った話

前職で「社内の情報がバラバラすぎる」という問題があった。マニュアルはGoogle Drive、連絡事項はチャット、申請フォームはあちこちのスプレッドシートに散らばっていた。予算もリソースも使えなかったので、GAS(Google Apps Script)だけで1日で社内ポータルを作った話をする。

なぜGASを選んだか

  • サーバー不要(Googleのインフラで動く)
  • 追加コスト0円
  • Google WorkspaceのAPIと連携しやすい
  • デプロイがボタン1つ
  • 社内ツールならこれで十分すぎる。

    全体の構成

    GASプロジェクト
    ├── Code.gs          # サーバーサイドのロジック
    ├── index.html       # メインのHTML
    ├── style.html       # CSS(HTMLファイルとして管理)
    └── script.html      # フロントエンドJS

    GASのHTMLサービスを使って、Webアプリとして公開する形をとった。

    サーバーサイド(Code.gs)

    function doGet(e) {
      return HtmlService.createTemplateFromFile('index')
        .evaluate()
        .setTitle('社内ポータル')
        .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
    }
    
    // スプレッドシートからお知らせを取得
    function getAnnouncements() {
      const sheet = SpreadsheetApp.openById('YOUR_SHEET_ID').getSheetByName('お知らせ');
      const data = sheet.getDataRange().getValues();
    
      return data.slice(1).map(row => ({
        date: Utilities.formatDate(row[0], 'Asia/Tokyo', 'yyyy/MM/dd'),
        title: row[1],
        content: row[2],
        category: row[3]
      })).filter(item => item.title); // 空行を除外
    }
    
    // 便利リンクの一覧を返す
    function getQuickLinks() {
      const sheet = SpreadsheetApp.openById('YOUR_SHEET_ID').getSheetByName('リンク集');
      const data = sheet.getDataRange().getValues();
    
      return data.slice(1).map(row => ({
        name: row[0],
        url: row[1],
        category: row[2],
        icon: row[3] || '🔗'
      })).filter(item => item.name);
    }

    データをスプレッドシートで管理することで、非エンジニアでもお知らせやリンクを更新できる。

    フロントエンド(index.html)

    
    
    
      
      
    
    
      

    社内ポータル

    お知らせ

    読み込み中...

    クライアントサイド(script.html)

    デプロイ手順

    1. GASエディタで「デプロイ」→「新しいデプロイ」

    2. 種類「ウェブアプリ」を選択

    3. 実行ユーザー:「自分」

    4. アクセスできるユーザー:「自分のドメイン内の全員」

    5. デプロイボタンを押してURLを取得

    このURLを社内チャットやメールに貼ればすぐ使える。

    実際に使われた機能

    作ったポータルには最終的に以下が揃った:

  • 社内お知らせ(スプレッドシートで管理)
  • よく使うリンク集(Google Forms、申請書、マニュアルなど)
  • 社内カレンダー(Google Calendar APIで取得)
  • 社員名簿(Google Directory APIで取得)
  • 1日で作った初期版から、要望に応じて少しずつ機能を足していった。

    まとめ

    GASのWebアプリ機能は、社内ツール作成に本当に向いている。ポイントは:

  • **データはスプレッドシートで管理**:非エンジニアが更新できる
  • **`google.script.run`で非同期通信**:サーバーとクライアントのブリッジ
  • **HTMLファイルを分割してインクルード**:可読性を維持する
  • 予算なし、サーバーなし、でも1日で動くものが作れる。社内ツールをどう作ろうか悩んでいるなら、まずGASを試してみる価値がある。