問い合わせメール対応が回らないので、Google Workspace Studio × Gemini × Slackで自動仕分けしてみた!
はじめに
会社のホームページから届く問い合わせメール。
最初は件数も少なく、人力で確認して対応できていました。
しかし問い合わせ件数が増えてくると、
- 確認漏れ
- 対応遅れ
- 誰が担当するべきか分からない
といった課題が発生するようになりました。
最初の対応として、問い合わせメールが届いたらSlackへ通知する仕組みを導入しました。
ところが、しばらく運用していると次の課題が出てきます。
通知は来るようになったけど、誰が対応するの?
問い合わせ内容を開いて確認しなければ担当者を判断できず、結局人が内容を読んでディスパッチする必要がありました。
そこで今回は、Google Workspace Studioを活用して、
- Gmailで問い合わせメールを検知
- Geminiで内容を要約・情報抽出
- スプレッドシートへ記録
- Slackへ通知
という仕組みを構築してみました。
また、実際に構築する中で遭遇したハマりポイントも紹介します。
最初のSOSから今回の仕組みができるまで
最初の相談はシンプルでした。
問い合わせメールを見落とさないように通知してほしい
そこで問い合わせメールを受信したタイミングでSlack通知を送る仕組みを導入しました。
しかし次に出てきたのは別の課題です。
通知は来るけど、誰が対応するか分からない
問い合わせ内容によって、
- 営業向け
- 開発向け
- サポート向け
など担当が変わります。
結局、通知を見た誰かがメールを開いて内容を確認し、担当者へ連絡する必要がありました。
そこで、
AIに内容を読ませて要約・分類してしまおう
という発想から今回の仕組みを作ることになりました。
今回作った仕組み
全体の流れは以下のようになります。
処理フロー
- 問い合わせメール受信
- GmailをトリガーにWorkspace Studioが起動
- Geminiがメール本文を解析
- 必要情報を抽出
- スプレッドシートへ保存
- GASが定期実行
- Slackへ通知
問い合わせ内容は蓄積されるため、
- 対応履歴の確認
- 集計
- 分析
にも活用できるようになりました。
なぜWorkspace Studioを選んだのか
今回検討した候補は以下のようなものです。
- GAS
- Make
- Zapier
- n8n
- Workspace Studio
その中でもWorkspace Studioを選んだ理由は大きく3つです。
Gmailとの連携が簡単
今回の起点はGmailです。
Google Workspace製品同士の連携になるため、設定が非常に簡単でした。
Geminiがそのまま利用できる
問い合わせ内容の要約や情報抽出が今回の肝でした。
Geminiを自然に組み込める点は非常に魅力的でした。
スプレッドシートとの親和性が高い
最終的なデータ保管先としてスプレッドシートを利用したかったため、Google製品で統一できるメリットは大きかったです。
Gmailトリガーの設定
まずは問い合わせメールを検知するトリガーを設定します。
問い合わせフォームから送信されるメールだけを対象にするため、送信元や件名などで条件を設定しました。
ここは環境によって異なりますが、
- 特定の送信元
- 特定の件名
- ラベル
などを活用すると管理しやすいと思います。
Geminiで情報を抽出する
次にGeminiを利用してメール本文から必要な情報を抽出します。
例えば以下のような情報です。
- 会社名
- 担当者名
- メールアドレス
- 問い合わせ種別
- 問い合わせ内容の要約
問い合わせメールはフォーマットが一定ではないことも多いため、人力で整理するよりもAIによる抽出の恩恵を感じやすい部分でした。
スプレッドシートへ保存
抽出した情報はスプレッドシートへ保存します。
保存する項目の例は以下のようなものです。
後続のSlack通知処理では、このスプレッドシートを参照します。
GASでSlack通知
Workspace Studioだけでも完結はできますが、今回は運用上の都合からGASを利用しました。
GASを定期実行し、
- 未通知レコードを取得
- Slackへ投稿
- 通知済みに更新
という流れです。
通知内容は以下のようなイメージです。
【新規問い合わせ】
会社名:○○株式会社
問い合わせ種別:開発相談
要約:
既存システム改修について相談したい
担当候補:
@営業
【新規問い合わせ】
会社名:○○株式会社
問い合わせ種別:開発相談
要約:
既存システム改修について相談したい
担当候補:
@営業
通知を見るだけで概要が分かるため、担当者の判断がかなり楽になりました。
ハマったポイント① 日本語キーでエラーになる
今回、一番最初にハマったポイントです。
Geminiの抽出結果として以下のようなキーを定義していました。
{
"会社名": "○○株式会社",
"担当者名": "山田太郎",
"問い合わせ内容": "..."
}
{
"会社名": "○○株式会社",
"担当者名": "山田太郎",
"問い合わせ内容": "..."
}
ところがエラーが発生して処理が進みません。
調査した結果、
抽出ステップのカスタムコンテンツのキーを日本語で設定するとエラーになる
という挙動でした。
英字キーに変更すると問題なく動作します。
{
"company_name": "○○株式会社",
"contact_name": "山田太郎",
"message": "..."
}
{
"company_name": "○○株式会社",
"contact_name": "山田太郎",
"message": "..."
}
正直かなりハマりました。
同じ現象に遭遇した方のXの投稿に救われました。
もし同じエラーで悩んでいる方がいたら参考になれば幸いです。
ハマったポイント② Gmailフィルタの落とし穴
こちらは原因に気づくまで少し時間がかかりました。
もともと問い合わせメールは受信トレイを汚さないために、Gmailのフィルタで自動アーカイブしていました。
設定としてはこんなイメージです。
問い合わせメール受信
↓
受信トレイをスキップ
↓
アーカイブ
問い合わせメール受信
↓
受信トレイをスキップ
↓
アーカイブ
ところが何度テストしてもWorkspace Studioのトリガーが発火しません。
調べてみると、
受信トレイをスキップしたメールはGmailトリガーの対象にならない
という挙動でした。
そこで、
問い合わせメール受信
↓
ラベル付与
↓
受信トレイは残す
問い合わせメール受信
↓
ラベル付与
↓
受信トレイは残す
へ変更。
すると正常にトリガーが動作するようになりました。
同じように問い合わせメールを自動アーカイブしている場合は要注意です。
実際に運用してみた感想
まだ運用を始めて間もないですが、
通知だけの頃と比べると、
- 内容確認の手間が減った
- 担当者の判断がしやすくなった
- 対応漏れに気付きやすくなった
という効果を感じています。
また、スプレッドシートに履歴が蓄積されるため、
- 問い合わせ件数の推移
- よくある問い合わせ内容
- 対応状況
などの分析にも活用できそうです。
まとめ
今回はGoogle Workspace Studioを活用して、
- Gmail受信
- Geminiによる要約・情報抽出
- スプレッドシート保存
- Slack通知
を行う仕組みを構築してみました。
Google Workspace中心の環境であれば、
- Gmail
- Gemini
- スプレッドシート
との連携が非常にスムーズで、かなり扱いやすい印象でした。
また、
- 日本語キーでエラーになる
- Gmailのアーカイブ設定でトリガーが動かない
といったハマりポイントもあったため、これから試す方の参考になれば幸いです。
今後は、
- 自動で担当者候補を判定する
- 問い合わせ内容をカテゴリ分類する
- 過去問い合わせとの類似検索を行う
といった発展も試してみたいと思います。