Google Apps Scriptで社内ポータルサイトを1日で作った話
Google Apps Scriptで社内ポータルサイトを1日で作った話
前職で「社内の情報がバラバラすぎる」という問題があった。マニュアルはGoogle Drive、連絡事項はチャット、申請フォームはあちこちのスプレッドシートに散らばっていた。予算もリソースも使えなかったので、GAS(Google Apps Script)だけで1日で社内ポータルを作った話をする。
なぜGASを選んだか
社内ツールならこれで十分すぎる。
全体の構成
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)
!= HtmlService.createHtmlOutputFromFile('style').getContent(); ?>
社内ポータル
お知らせ
読み込み中...
よく使うリンク
!= HtmlService.createHtmlOutputFromFile('script').getContent(); ?>
クライアントサイド(script.html)
デプロイ手順
1. GASエディタで「デプロイ」→「新しいデプロイ」
2. 種類「ウェブアプリ」を選択
3. 実行ユーザー:「自分」
4. アクセスできるユーザー:「自分のドメイン内の全員」
5. デプロイボタンを押してURLを取得
このURLを社内チャットやメールに貼ればすぐ使える。
実際に使われた機能
作ったポータルには最終的に以下が揃った:
1日で作った初期版から、要望に応じて少しずつ機能を足していった。
まとめ
GASのWebアプリ機能は、社内ツール作成に本当に向いている。ポイントは:
予算なし、サーバーなし、でも1日で動くものが作れる。社内ツールをどう作ろうか悩んでいるなら、まずGASを試してみる価値がある。