はじめに:ノーコードでも「本格ワークフロー」は作れる
「申請書をスプレッドシートで管理しているが、承認漏れが多い」「Slackで承認依頼を送っているが、対応状況が見えない」——こうした課題を、コーディングなしで解決できるのが Google App Sheet です。
さらに、App SheetにGeminiやClaude APIを組み合わせることで、AIが申請内容を要約・チェックし、承認者に的確な情報を伝えるインテリジェントなワークフローが実現します。本記事では、経費申請・稟議書・休暇申請などに使える承認フローの構築手順を、実務レベルで解説します。
App Sheetで承認ワークフローを設定する方法 / Gemini・Claude APIとの連携パターン / 自動メール・Slack通知の実装 / 実務で使えるプロンプト例
App Sheetのワークフロー機能とは
App Sheetは、Googleスプレッドシートをデータソースとしてノーコードでアプリを作成できるプラットフォームです。Google Workspaceに含まれており、追加コストなしで利用できます(一部プラン除く)。
ワークフロー機能として特に重要なのが Automation(自動化) です。「レコードが追加されたとき」「ステータスが変わったとき」といったトリガーに応じて、メール送信・Slack通知・データ更新・外部API呼び出しなどを自動実行できます。
| 機能 | 内容 | 活用例 |
|---|---|---|
| トリガー | レコード追加・更新・削除・スケジュール | 申請が来たら承認者にメール |
| 条件分岐 | 金額・部署・タイプで処理を切替 | 10万円以上は役員承認へ |
| メール送信 | テンプレートで自動送信 | 承認完了通知・却下通知 |
| Webhook | 外部APIへのHTTPリクエスト | Claude API / Slack / Chatwork |
| Apps Script連携 | Google Apps Scriptで高度な処理 | PDF生成・AI要約 |
承認ワークフローの構築手順
Step 1:スプレッドシートでデータ設計
まずGoogleスプレッドシートに申請データのテーブルを作成します。経費申請の場合、以下のような列構成が基本です。
# スプレッドシート列構成(経費申請テーブル)
申請ID | 申請日 | 申請者名 | 申請者メール
申請種別 | 金額 | 目的・内容 | 添付ファイル
ステータス | 承認者メール | 承認日 | コメント
AI要約 | 優先度 | 部門コード
ポイント:「ステータス」列は 申請中 / 承認済 / 却下 / 差戻し の4値に統一すると、App Sheetのフィルタリングと自動化が設定しやすくなります。
Step 2:App Sheetでアプリ作成
- Google Driveからスプレッドシートを選択してアプリを作成
- 「申請フォーム」ビュー:Form型ビューで入力画面を構成
- 「承認一覧」ビュー:承認者用にステータスでフィルタリング
- 「マイ申請」ビュー:申請者が自分の申請のみ閲覧
App Sheetの「Security Filter」機能を使うと、USEREMAIL() = [申請者メール] のような式で、ログインユーザーが自分のデータのみ閲覧できるよう制限できます。
Step 3:Automationで承認フローを設定
App SheetのAutomationタブで以下のボットを作成します。
-
1
申請受付ボット
トリガー:新規レコード追加(ステータス=申請中)
アクション:承認者へメール送信(申請内容・承認URLを記載) -
2
承認完了ボット
トリガー:ステータスが「承認済」に変更
アクション:申請者へ承認通知メール + 必要に応じてSlack通知 -
3
却下・差戻しボット
トリガー:ステータスが「却下」または「差戻し」に変更
アクション:理由コメントを含む通知メールを申請者へ送信 -
4
リマインダーボット
トリガー:スケジュール(毎朝9時)
アクション:48時間以上「申請中」のものを承認者にリマインド
GeminiとApp Sheetの連携
App SheetはGoogle Workspace製品と同じGoogleエコシステムのため、Gemini APIとの連携が最も簡単です。Google Apps Scriptを介してGemini APIを呼び出し、その結果をApp Sheetのセルに書き戻す方法が一般的です。
Apps Script経由でGemini呼び出し
// Google Apps Script: Gemini APIで申請内容を要約
function summarizeWithGemini(applicationText) {
const API_KEY = PropertiesService.getScriptProperties()
.getProperty('GEMINI_API_KEY');
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${API_KEY}`;
const payload = {
contents: [{
parts: [{
text: `以下の申請内容を承認者向けに3行以内で要約してください。
金額・目的・緊急度を含めること。\n\n${applicationText}`
}]
}]
};
const response = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
});
const result = JSON.parse(response.getContentText());
return result.candidates[0].content.parts[0].text;
}
このスクリプトをApp SheetのWebhookから呼び出す場合は、Apps Scriptを Webアプリとしてデプロイ し、そのURLをApp SheetのAutomation → Call a script のエンドポイントに設定します。
Geminiで申請内容を自動チェック
単純な要約だけでなく、以下のような高度なチェックも可能です。
// 申請内容の妥当性チェックプロンプト例
`あなたは経費申請の審査担当です。以下の申請を確認し、
下記の観点でチェックしてください。
申請内容: ${applicationContent}
申請金額: ${amount}円
申請種別: ${category}
【チェック観点】
1. 金額と目的の整合性(高額すぎないか)
2. 必要な情報が揃っているか(日付・先方・目的)
3. 社内規程上の問題点(上限額・禁止項目)
結果を JSON 形式で返してください:
{"status": "OK/要確認/NG", "reason": "...", "priority": "高/中/低"}`
Geminiが生成した要約テキストをスプレッドシートの「AI要約」列に書き込み、App Sheetのメールテンプレートで <<[AI要約]>> として参照すると、承認者は詳細を確認する前に概要を把握できます。
Claude APIとの連携パターン
より高度な文章生成・分析が必要な場合は Claude API(Anthropic)との連携も有効です。Claude は長文の読み込みや複雑な判断が得意なため、稟議書・契約書レビューなどに特に適しています。
Claude APIをApp SheetのWebhookから呼び出す
// Apps Script: Claude API呼び出し
function reviewWithClaude(documentText) {
const CLAUDE_API_KEY = PropertiesService.getScriptProperties()
.getProperty('CLAUDE_API_KEY');
const payload = {
model: "claude-opus-4-5",
max_tokens: 1024,
messages: [{
role: "user",
content: `以下の稟議書を法務・コンプライアンス観点でレビューし、
承認者へのアドバイスを簡潔にまとめてください。
${documentText}`
}]
};
const response = UrlFetchApp.fetch('https://api.anthropic.com/v1/messages', {
method: 'post',
headers: {
'x-api-key': CLAUDE_API_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json'
},
payload: JSON.stringify(payload)
});
const result = JSON.parse(response.getContentText());
return result.content[0].text;
}
GeminiとClaudeの使い分け
| 用途 | 推奨モデル | 理由 |
|---|---|---|
| 申請内容の3行要約 | Gemini Flash | 低コスト・高速。Google Workspaceと親和性が高い |
| 稟議書・契約書のレビュー | Claude | 長文処理・ニュアンス判断が得意 |
| FAQ自動回答 | Gemini Pro | Google検索との連携でリアルタイム情報も参照可能 |
| 複雑な分類・優先度判定 | Claude | 細かい条件分岐や例外処理が得意 |
Slack自動通知の設定
メール通知に加え、Slackへの通知を追加すると承認スピードが大幅に向上します。App SheetのAutomationから Slack Incoming Webhook を呼び出す方法を紹介します。
Slack Webhookの設定
- Slack管理画面 → Apps → Incoming Webhooks → Add to Slack
- 通知先チャンネルを選択してWebhook URLを取得
- App Sheet Automation → "Call a webhook" → URL に貼り付け
// Slackへ送るJSONペイロード(App Sheet式で構成)
{
"text": "【承認依頼】新しい申請が届きました",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*申請者:* <<[申請者名]>>\n*金額:* <<[金額]>>円\n*目的:* <<[AI要約]>>"
}
},
{
"type": "actions",
"elements": [{
"type": "button",
"text": { "type": "plain_text", "text": "アプリで確認" },
"url": "https://www.appsheet.com/start/..."
}]
}
]
}
実務で使える応用パターン
多段階承認(2段階・3段階)
金額によって承認段階を変えるパターンは、スプレッドシートに「承認フェーズ」列を追加し、ステータスを 一次承認待ち → 二次承認待ち → 最終承認待ち → 完了 と遷移させることで実現できます。各フェーズの変更をトリガーとして次の承認者への通知ボットを用意します。
モバイルからの承認
App Sheetはスマートフォンアプリとしても動作します。承認者はスマートフォンから申請一覧を確認し、その場で承認・却下できます。メールに記載した「アプリで開く」URLをタップするだけで対象レコードに直接遷移できます。
PDF出力との連携
承認済みの申請書をPDF化して保管する場合、Apps ScriptでGoogleドキュメントのテンプレートにデータを流し込み、PDF出力→Google Driveに保存→申請者にリンク送付、というフローを自動化できます。
Gemini・Claude APIのキーは、Apps Scriptの「スクリプトプロパティ」に保存し、スクリプト本文にハードコードしないようにしてください。スプレッドシートのセルやApp Sheetの設定画面に直接書くことも避けましょう。
コストと導入のポイント
| ツール | 費用感 | 備考 |
|---|---|---|
| App Sheet | 無料〜$10/ユーザー/月 | Google Workspace Business以上は含まれる場合あり |
| Gemini API | Flash: 約$0.075/100万トークン | 申請要約なら1申請あたり0.01円以下 |
| Claude API | claude-haiku: 約$0.25/100万トークン | 稟議書レビュー用途なら月数百円〜 |
| Slack | 無料〜$7.25/ユーザー/月 | Incoming Webhookは全プランで利用可能 |
まとめ:AIワークフローで「承認待ち」をなくす
App SheetとGemini/Claude APIを組み合わせることで、次のような効果が期待できます。
- 承認スピード向上:AI要約で承認者の確認時間を短縮。Slack通知で承認漏れを防止
- 申請品質の向上:AIによる事前チェックで不備のある申請を削減
- トレーサビリティ:すべての申請・承認履歴がスプレッドシートに残る
- 低コスト導入:Google WorkspaceとAPI費用のみで本格ワークフローを実現
まずは1種類(経費申請など)からシンプルな構成で始め、慣れてきたら多段階承認・AI要約・PDF出力へと段階的に拡張することをおすすめします。
App Sheet + AI連携のワークフロー構築を支援しています。社内の申請フロー整理からシステム構築・運用サポートまでお気軽にご相談ください。