毎日のメール処理をAIが代行 — 受信から返信まで自動化
SECTION 10
メール処理は「判断」と「作業」に分かれる。
「作業」の部分をGASで自動化し、人間は「判断」に集中する。
SECTION 10
GASからGmailを操作するための主要メソッド一覧です。すべて GmailApp クラスから呼び出します。
| メソッド | 説明 | 戻り値 |
|---|---|---|
GmailApp.search(query) | 検索条件に合致するスレッドを取得 | GmailThread[] |
GmailApp.getInboxThreads() | 受信トレイのスレッドを取得 | GmailThread[] |
GmailApp.sendEmail(to, subject, body) | メールを送信 | void |
GmailApp.createDraft(to, subject, body) | 下書きを作成 | GmailDraft |
thread.getMessages() | スレッド内のメッセージ一覧 | GmailMessage[] |
message.getSubject() | 件名を取得 | String |
message.getBody() | 本文(HTML)を取得 | String |
message.getPlainBody() | 本文(プレーンテキスト)を取得 | String |
message.getFrom() | 送信者を取得 | String |
thread.addLabel(label) | スレッドにラベルを付与 | GmailThread |
SECTION 10
| 演算子 | 意味 | 例 |
|---|---|---|
is:unread | 未読メール | "is:unread" |
from: | 送信元で絞り込み | "from:boss@example.com" |
subject: | 件名で絞り込み | "subject:請求書" |
newer_than: | 期間指定 | "newer_than:1d" |
has:attachment | 添付ファイル付き | "has:attachment" |
label: | ラベル指定 | "label:重要" |
{条件1 条件2} で指定します。SECTION 10
送信者・受信者のメールアドレスを文字列で返す
件名を取得。フィルタリングやカテゴリ分類に使用
本文をプレーンテキスト/HTMLで取得。AI処理にはPlainBody推奨
添付ファイルの配列を返す。Blob形式でDriveに保存可能
GAS + Gemini API で実現する5つの実践パターン
SECTION 10 — 自動化パターン
SECTION 10 — 自動化パターン
SECTION 10 — 自動化パターン
毎朝、未読メールの要約をSlackやChatworkに自動通知。
出社前にスマホで重要メールを把握できます。
社内標準チャットへの通知。ルーム指定で部署別配信も可能
Incoming Webhookで専用チャンネルに投稿
個人のスマホにプッシュ通知
要約結果を自分宛に送信(最もシンプル)
SECTION 10 — 自動化パターン
SECTION 10 — 自動化パターン
注文確認メール、問い合わせメール、申込メールなどの定型メールから必要な情報をAIで抽出し、スプレッドシートに自動記録
GASからChatwork / Slack / LINE に通知を飛ばす
SECTION 10 — 外部連携
Chatwork APIトークンを取得し、GASからHTTPリクエストでメッセージを投稿します。
Chatwork管理画面 > API > トークン発行
PropertiesServiceでトークンを安全に保管
ChatworkのURL末尾の数字がルームID
時間主導型トリガーで定期実行(例: 毎朝8時)
SECTION 10 — 外部連携
api.slack.com/apps > Create New App
Features > Incoming Webhooks > On
投稿先チャンネルを選択してWebhook URLを取得
Webhook URLをSLACK_WEBHOOKとして保存
SECTION 10 — 外部連携
LINE Notifyを使えば、GASから個人やグループのLINEにプッシュ通知を送信できます。
特定キーワード(「至急」「緊急」)を含むメールを即座にLINEに転送
毎朝の未読メールサマリーをLINEで受け取り
承認待ちが48時間以上滞留した場合にリマインド
実際にGASでGmail自動化を体験しよう
SECTION 10 — ハンズオン
script.google.com にアクセスし、新規プロジェクトを作成
コード.gs に貼り付けて保存
listUnreadEmails を選択して実行ボタン(▶)をクリック
初回実行時にGmailアクセス権限の承認ダイアログが表示されます
SECTION 10 — ハンズオン
未読メールの件名・本文をGemini APIに渡し、要点を3行で要約。結果をスプレッドシートに記録します。
SECTION 10 — ハンズオン
前のハンズオンで作成したcallGemini関数を再利用
autoReplyDraft関数をコード.gsに追加
Gmailの下書きフォルダに返信ドラフトが生成されます
AIが生成した返信は必ず人間が確認してから送信しましょう。不適切な内容や誤った情報が含まれる可能性があります。
SECTION 10
Google AI Studio(aistudio.google.com)でAPIキーを発行
GCPプロジェクトIDをコード冒頭のPROJECT_ID変数に設定
すべての自動化パターンからこの関数を呼び出す
| モデル | 特徴 | 用途 |
|---|---|---|
| gemini-2.5-flash | 高速・低コスト | 分類・要約 |
| gemini-2.5-pro | 高精度 | 複雑な分析 |
Gemini 2.5 Flash: 1日あたり約1,500リクエスト(無料)
日常的なメール自動化には十分な量です。
SECTION 10
| トリガー種類 | 説明 | 設定例 |
|---|---|---|
| 時間主導型 | 指定した間隔で実行 | 毎朝8時 |
| カレンダー | 予定の更新時に実行 | 予定変更時 |
| フォーム送信 | フォーム回答時に実行 | 回答受信時 |
| スプレッドシート | 編集時に実行 | 値変更時 |
SECTION 10
氏名・住所・電話番号・クレジットカード番号などはAIに送信する前にマスキング処理を行う
社外秘の契約書・見積書の内容はAIに送らない。送る場合は社内ポリシーを確認
APIキーはPropertiesServiceに保存。ソースコードに直書きしない
SECTION 10
| エラー | 原因 | 対策 |
|---|---|---|
| Exception: Service invoked too many times | 日次制限超過 | 実行回数を制御 |
| Exception: Limit Exceeded | API レート制限 | Utilities.sleep()で間隔を空ける |
| Exception: Authorization is required | 権限不足 | OAuth スコープを確認 |
| API 429 Too Many Requests | Gemini APIレート制限 | リトライロジックを追加 |
SECTION 10
| 操作 | 無料アカウント | Workspace |
|---|---|---|
| メール送信 | 100通/日 | 1,500通/日 |
| メール読み取り | 制限なし | 制限なし |
| GAS実行時間 | 6分/回 | 30分/回 |
| トリガー数 | 20個 | 20個 |
| UrlFetch | 20,000回/日 | 100,000回/日 |
1日あたり約1,500リクエスト無料。日常的なメール処理には十分
Flash: 入力$0.15/100万トークン、出力$0.60/100万トークン。メール1通の要約で約$0.0001
SECTION 10
ここまでのパターンを組み合わせた全自動ワークフローの全体像です。
SECTION 10
「小さく始めて、効果を確認してから拡大する」が自動化成功の鉄則です。
お疲れさまでした!次のセクションに進みましょう。