概要
Google Apps Script(GAS)を基盤に構築した会員制サービス運営の業務自動化システム。入会・決済・AI分析・イベント運営・KPI管理までを統合し、Google Workspace上で一元管理できる。
対象ユーザー
- 会員制サービスを運営する中小企業・コミュニティ
- 入会受付・決済管理・会員通知を手作業で行っている運営者
- AIを活用して会員マッチングや月次レポートを自動化したい事業者
Demo / GitHub
🔗 コピーして試す | GitHub
スクリーンショット
START HERE — 操作手順・Demo一覧・API設定説明
会員マスタ — 会員情報・ステージ・バッジ・業界タグ管理
実行ログ — 全操作の統一ログ(モジュール・アクション・ステータス)
ダッシュボード — 会員KPI・Stage分布・Chapter分布・Badge分布
開発背景
クラウドソーシングの案件で、会員制サービスの運営自動化(入会・決済・AI分析・イベント・KPI管理の23機能)が求められた。23機能を個別に見せるのではなく、5つの業務フローに整理してService層で統合する設計を提案し、Demoとして全フローが動作するプロトタイプを開発した。
解決した課題
- 入会申込→DB登録→Slack通知→Welcomeメール送信を一連の処理として自動化
- Claude APIによる会員マッチングレポートと月次レポートの自動生成
- Stripe Webhook連携による決済ステータスの自動管理
- イベント参加者のCSV取込からAI席割り提案・リマインド送信までを自動化
- 全操作の実行ログとKPIダッシュボードで運営状況を可視化
主な機能
Demo01: 会員ライフサイクル
- Google Form → 会員DB自動登録 → Slack通知 → Welcomeメール送信
- 会員ステージ自動更新(入会日数ベース)/ バッジ自動付与(紹介数ベース)
Demo02: AI自動レポート
- Claude APIによるAIマッチングレポート生成
- 月次KPIレポート自動生成・全会員への一括配信
Demo03: 決済自動化
- Stripe Webhook受信による決済状態の自動同期(checkout / invoice / subscription)
- 決済ステータス自動更新 → Slack通知 → 領収メール送信
- 解約処理・決済失敗時の自動対応
Demo04: イベント運営
- Peatix CSV取込 → イベント・参加者DB登録
- Claude APIによるAI席割り提案
- リマインドメール・フォローアップメール送信
Demo05: 運営ダッシュボード
- KPI自動集計(会員数推移・月次成約数・累計成約額)
- スプレッドシート内グラフの自動生成・更新
- システム全体の実行ログ一覧
共通機能
- カスタムメニューUI(スプレッドシート上の管理者操作メニュー)
- 異常処理デモ(5ケース:未入力・API認証エラー・不明ID・参加者0名・データ0件)
- デモデータリセット機能
使用技術
- バックエンド: Google Apps Script(GAS)
- AI: Claude API (Anthropic)
- 決済: Stripe API / Webhook
- 通知: Slack API / GmailApp
- データ管理: Google Spreadsheet(会員DB・ログ・レポート・KPI)
- フォーム: Google Forms
- デプロイ: clasp(GAS CLI)
設計上の工夫
- Service層アーキテクチャ: 共通処理(会員管理・通知・AI・決済・イベント)をServiceとして分離し、各業務フローはServiceを組み合わせるだけで構築できる構成とした
- 設定の2層構成: APIキーはPropertiesService(セキュリティ)、業務設定(ステージ進級日数・バッジ閾値等)はスプレッドシート(非エンジニアでも変更可能)に分離し、運用性とセキュリティを両立
AI活用の工夫
- AIの役割を限定: AIは会員マッチングレポート生成・月次KPIレポート生成・イベント席割り提案の3つのみを担当。会員管理・決済処理・通知送信・ログ記録は通常のプログラムで実装
- 構造化プロンプト: 会員情報(業界タグ・ステージ・Chapter)を構造化データとしてプロンプトへ渡し、マッチング精度を向上。レポートはMarkdown形式で出力し、メール本文にそのまま利用可能
- エラーハンドリング: Claude API接続失敗時はSlack通知+ログ記録で異常を即座に把握。APIキー未設定時は明確なエラーメッセージを表示
アーキテクチャ
Google Form / Stripe Webhook / Peatix CSV
│
▼
Google Apps Script(バックエンド)
│
┌────┴────────────────────┐
│ Service層 │
│ ├─ MemberService │
│ ├─ NotificationService │
│ ├─ AIService │
│ ├─ PaymentService │
│ └─ EventService │
├─────────────────────────┤
│ 外部サービス │
│ ├─ Claude API │
│ ├─ Stripe │
│ ├─ Slack │
│ └─ Gmail │
├─────────────────────────┤
│ 共通基盤 │
│ ├─ Config(設定管理) │
│ ├─ Logger(統一ログ) │
│ └─ Triggers(トリガー) │
└─────────────────────────┘
│
▼
Google Spreadsheet
├─ 会員マスタ
├─ 決済履歴
├─ マッチングレポート
├─ イベント / 参加者
├─ KPI / ダッシュボード
├─ ログ
└─ 設定
開発周期
5日
担当範囲
要件分析 / アーキテクチャ設計 / Service層設計 / 全Demo実装 / 異常処理設計 / テスト / ドキュメント作成
成果・実現したこと
- 23機能の業務要件を5つの業務フローに整理し、共通のService層で統合する設計を提案・実装した
- 全5つのDemoと異常処理5ケースのテストを完了し、正常系・異常系ともに動作確認済み
- Service層の再利用により、Demo01で作成したMemberService・NotificationServiceをDemo02〜05全てで共有。新機能追加時の実装コストを削減
想定導入効果
- 入会受付業務の自動化
- 会員レポートの自動生成・配信
- 決済管理の自動化
- イベント運営の効率化
- KPIによる運営状況の可視化
開発で直面した課題と解決方法
- 23機能の整理: クライアントの要件(23機能)を「会員」「AI」「決済」「イベント」「ダッシュボード」の5業務フローに再分類し、機能間の依存関係を整理。Service層で共通化することで、各Demoの実装を「Serviceの組み合わせ」に単純化した
- Stripe Webhook検証: GASのdoPost()でStripe Webhookを受信する際、署名検証とイベント種別判定を実装し、不正リクエストを防止
このプロジェクトで学んだこと
- クライアントの機能一覧をそのまま実装するのではなく、業務フローに再構成してから設計することで、共通化の余地が見え、実装量を大幅に削減できることを学んだ
- Google Workspace(GAS・Spreadsheet・Forms・Gmail)を活用することで、小〜中規模の業務システムをサーバーレスかつ低コストで構築できることを実感した
- 異常処理のデモを用意することで、正常系だけでなくエラー時の挙動まで提示でき、クライアントの信頼獲得に繋がることを実感した