1. イントロダクション —— 散らばるやりとりを、AIと一緒に集約する
営業の現場では、顧客とのメール、社内のチャット、議事メモなど、日々のやりとりがさまざまな場所に散らばっていきます。
Google Workspaceをメインに利用し、特定のCRMを導入していないチームであれば、「顧客対応=Gmail」「社内共有=Chat」という分かれ方はごく自然なものです。
けれども、その結果として、なぜこの返信になったのかという根拠や思考の流れが残らないことが多いのではないでしょうか。
たとえば、ある顧客から問い合わせメールが届いたとき。
返信方針を上司やチームと相談しても、議論はChat上で流れ、最終的な決定はGmailにしか残らない。
この「やりとりの散在」は、個人の判断に依存しやすい環境を生んでしまいます。
今回紹介するのは、そんな状況をGeminiとGASを使ってつなぐ方法です。
CRMがなくても、Google Workspaceだけで「メール→Chat→Gemini→Gmail」というループを作り、やりとりの過程をChatに自動で蓄積させることができます。
Chatを擬似CRMとしてデータベース化し、Geminiと一緒に返信を考え、議論の履歴をナレッジとして残す。
これが今回の記事で紹介するメールとチャットを連携させる営業ナレッジ設計法です。
2. ステップ 1:設計思想 —— 「対顧客はGmail、対社内はChat」で分業する
まず前提として、Google Workspaceをメインに利用している営業チームのやりとりは大きく2種類に分かれます。
1つは顧客との公式なやりとり(Gmail)、もう1つは社内での思考や検討のやりとり(Chat)です。
CRMが整備されていないチームの場合、この2つの流れを「どちらもAIに任せよう」と考えると、かえって複雑になります。
自動返信や全自動整理は便利そうに見えますが、現場では判断の経緯や背景の共有が抜け落ちがちです。
そこで、本稿では考え方を逆にします。
AIを自動化ツールとしてではなく、「思考のパートナー」としてChat側に常駐させる。
つまり、AIが「社内の議論に同席している」状態を作るのです。
🧩 Chatを擬似CRMとして使う
Chatをただの連絡手段ではなく、判断と記録の場として扱うのがポイントです。
Gmailで届いたメールをGASでChatに通知し、そこからGeminiを呼び出して要約や返信方針をチームで検討する。
そのやりとりがChatに残れば、それ自体が「案件履歴」になります。
CRMでいう「顧客カード」や「案件メモ」のような機能を、Chatのスレッド単位で再現してしまう、という発想です。
この方法の良いところは、現場がすでに使っているツールをそのまま活かせること。
新しいシステム導入も不要で、Chat内の議論ログがそのまま「チームの思考データベース」になります。
💬 AIと人の分担を明確にする
Chatに常駐するGeminiの役割は、あくまで「思考を助ける」こと。
返信方針の整理やトーンの提案、要約や分類など、判断に必要な素材を整えるのがAIの領域です。
一方で、「どのように返すか」「最終的な判断を誰が下すか」はチームの仕事。
この線引きを明確にしておくことで、AIが提案した内容に依存するのではなく、AIを介して人が考える構造を作れます。
🔁 Gmail→Chat→Gemini→Gmailという思考の循環
この構造を一言でまとめるなら、「AIに考えさせるのではなく、AIと一緒に考える営業ループ」です。
- Gmailで顧客のメールを受信
- GASがChatに要約通知
- Chat上でGeminiとチームが返信方針を議論
- Gmailで最終確認・送信
この往復を繰り返すことで、チームの判断とAIの理解が同じ場所に蓄積されていく。
これが、「Chatを擬似CRM化する」設計思想の本質です。
3. ステップ 2:GAS連携 —— Gmailの要約をChatに安全に渡す
ここからは、Gmailで受信したメールをChat(Spaces)に自動通知する仕組みを作ります。
Google Workspaceだけで完結し、スプレッドシートも不要。
一度設定すれば、毎回の受信メールがチームのChatへ自動で届くようになります。
「難しそう」と感じるかもしれませんが、Googleアカウント1つあれば完結しますのでぜひトライしてみましょう。
🧭 全体の流れ
- Apps Scriptで新しいプロジェクトを作成
- コードを貼り付ける
- ChatでWebhook URLを取得
- スクリプトプロパティにURLを登録
- People APIサービスを有効化
- トリガーを設定し、テスト実行
🔧 ステップ 1:GASエディタを開く
- https://script.google.com/ へアクセス
- 「新しいプロジェクト」を作成し、名前をGmail_Chat_Notifyなどに変更
💻 ステップ 2:コードを貼り付ける(People API対応版)
以下のコードを貼り付けてください。
※後述するPeople APIの利用と、Webhook URLのプロパティ設定が必要です。
/**
* Gmail → Chat 自動通知(安全フィルタ・キャッシュ対応版)
* 1. Webhook URLはスクリプトプロパティ(CHAT_WEBHOOK_URL)から取得
* 2. 連絡先登録者のみ通知(FILTER_BY_CONTACTS = true の場合)
* 3. People APIで連絡先を取得し、1時間キャッシュ
* 4. 初回は TEST_MODE_LIMIT 件のみ処理
* ⚠️ Apps Scriptエディタの「サービス」で「Google People API」を追加しておくこと
*/
const PROCESSED_LABEL = "Chat通知済み";
const CACHE_EXPIRATION_SECONDS = 3600;
const FILTER_BY_CONTACTS = true; // true: 安全モード / false: CRMモード
const TEST_MODE_LIMIT = 3; // 初回は3件だけ処理
/**
* 連絡先リストをキャッシュまたはPeople APIから取得
*/
function getContactEmailList_() {
const cache = CacheService.getScriptCache();
const cachedEmails = cache.get('contactEmails');
if (cachedEmails) return JSON.parse(cachedEmails);
let contactEmails = [];
let pageToken = null;
try {
do {
const res = People.People.Connections.list('people/me', {
pageSize: 500,
pageToken: pageToken,
personFields: 'emailAddresses'
});
if (res.connections) {
res.connections.forEach(p => {
if (p.emailAddresses)
p.emailAddresses.forEach(e => e.value && contactEmails.push(e.value));
});
}
pageToken = res.nextPageToken;
} while (pageToken);
contactEmails = [...new Set(contactEmails)];
CacheService.getScriptCache().put('contactEmails', JSON.stringify(contactEmails), CACHE_EXPIRATION_SECONDS);
return contactEmails;
} catch (e) {
throw new Error(`People API エラー: ${e.message}(サービスが追加されているか確認)`);
}
}
/**
* メイン処理
*/
function onNewMail() {
const chatWebhookUrl = PropertiesService.getScriptProperties().getProperty('CHAT_WEBHOOK_URL');
if (!chatWebhookUrl) throw new Error("プロパティ 'CHAT_WEBHOOK_URL' が設定されていません。");
const label = GmailApp.getUserLabelByName(PROCESSED_LABEL) || GmailApp.createLabel(PROCESSED_LABEL);
let contactEmails = FILTER_BY_CONTACTS ? getContactEmailList_() : [];
const query = 'label:inbox -label:' + PROCESSED_LABEL + ' is:unread';
const threads = GmailApp.search(query);
const maxThreads = Math.min(threads.length, TEST_MODE_LIMIT);
for (let i = 0; i < maxThreads; i++) {
const thread = threads[i];
const msg = thread.getMessages()[thread.getMessageCount() - 1];
const sender = msg.getFrom();
if (FILTER_BY_CONTACTS && !contactEmails.some(e => sender.includes(e))) {
thread.addLabel(label); // 除外メールにもラベル付与
continue;
}
const summary =
`📩 *新着メール*\nFrom: ${sender}\nSubject: ${msg.getSubject()}\n\n${msg.getPlainBody().substring(0,800)}...`;
try {
UrlFetchApp.fetch(chatWebhookUrl, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ text: summary }),
muteHttpExceptions: true
});
} catch (e) {
Logger.log(`Chat通知失敗: ${e.message}`);
}
thread.addLabel(label);
}
}
🔗 ステップ 3:Chat側でWebhook URLを取得しプロパティに登録
- Chat(Google Chat)を開き、通知を送りたいスペースを選択
- 右上の「歯車アイコン」→「アプリと統合」→「Webhookを追加」
- 名前を「Gmail通知」などに設定し、「URLをコピー」

⚙️ ステップ 4:スクリプトプロパティにWebhook URLを登録
- エディタ上部メニュー → 「プロジェクト設定」→「スクリプトプロパティを表示」
- キー :CHAT_WEBHOOK_URL
- 値 :Chatで取得したWebhook URL(例
https://chat.googleapis.com/v1/spaces/...)
🧩 ステップ 5:People API サービスを有効化
- 左側メニュー「サービス」横の [+] をクリック
- 一覧から「Peopleapi」を選び「追加」
- コード中でPeople APIが利用可能になります

⏰ ステップ 6:トリガーを設定
- エディタ上部の「時計アイコン」→「トリガーを追加」
- 関数:onNewMail
- イベントの種類:「時間主導型」→「分ペースのタイマー」→「5分おき」

💡 テスト時はTEST_MODE_LIMIT = 3のまま、通知が届くのを確認した後に3件の制限を緩めましょう。
💬 運用ポイント
| 設定 | 内容 | 目的 |
|---|---|---|
| FILTER_BY_CONTACTS = true | 連絡先登録者のみ通知 | 初期導入時の安全運用 |
| FILTER_BY_CONTACTS = false | すべて通知(CRMモード) | 新規顧客も対象に |
| キャッシュ利用 | People API呼び出しを1時間に1回に制限 | 実行時間・Quota節約 |
| 処理済みラベル | すべてのスレッドに付与 | 重複送信防止 |
🧠 Tips:People APIの利用料金
Google People APIは1時間に1回程度の呼び出しであれば、無料枠(Quota)を超えることはまずありません。
Maps APIのような従量課金ではないため、コストを心配する必要はありません。
✅ これでGmail→Chatの自動通知が完成!
以降は、Chat側でGemini を呼び出してメール内容を要約・整理し、チームで返信方針を検討できるようになります。
次のセクションでは、このChat上でのやりとりを「Crawl→Walk→Run」の3段階で体系化していきます。
4. ステップ 3:Geminiで返信を育てる —— Crawl → Walk → Run の3段階
GASでChatに自動通知されるようになると、受信メールはチーム全員がリアルタイムで把握できる状態になります。
ここからが本当の価値の始まりです。
AIに返信を「代わりに作らせる」のではなく、AIと一緒に返信の意図を整理し、考えるプロセスを共有する。
これこそが、CRMがなくてもチーム全体の再現性を高める方法です。
🐣 Crawl —— まずは内容を理解させる
最初のステップは、AIを理解支援ツールとして活用する段階です。
Chat内でGeminiに対し、届いたメールの要点を掴むよう指示します。
このメールを要約して。
顧客が一番伝えたいことは何?
感情トーンを判定して(例:懸念/感謝/提案要望)。
Geminiは文脈とトーンを抽出して返してくれるので、どのようなニュアンスで返信すべきかをチーム全体で共有できます。
ここで大事なのは、AIに「答えを出させる」のではなく、共通の理解土台を作ることです。
🚶 Walk —— 方針を整理する
理解が揃ったら、次は返信方針をAIと一緒にまとめる段階。
このフェーズでは、Geminiに対して「構造化した整理」を求めます。
このメールの返信方針を一緒に整理したいです。
顧客の要望を3点にまとめ、以下の観点で提案してください。
1. トーン(感情推定:安心/懸念/不満など)
2. 主題(相談・依頼・要望のどれか)
3. 優先度(緊急度・影響度)
4. 推奨返信タイプ(短文/丁寧/提案型 など)
Geminiはこれらをもとに「返信の方向性」を構造化して返します。
それをチームでレビューし、合意形成を進める。
このやり取りが、擬似CRM上での思考履歴として蓄積されていきます。
🏃 Run —— チームで磨く
最後のフェーズは、Geminiが提案したドラフトをベースに人とAIが共同で最終案を練り上げる段階です。
@上長 顧客はやや懸念トーンです。「提案型」で返す形でよいでしょうか?
@Gemini 懸念を和らげつつ、次回打ち合わせの提案も添えた返信文を作成して。
Geminiが叩き台を生成し、上司・チームメンバーがそれをブラッシュアップしていく。
この過程で、AIが出した案そのものよりも、判断・修正・補足といった人の思考の軌跡が残ることに意味があります。
💡 Chatをナレッジ化するためのポイント
| 観点 | 内容 | 効果 |
|---|---|---|
| 思考ログ | Geminiとのやり取りをChat上に残す | 対応の再現性を確保 |
| 方針共有 | なぜこの返信にしたかを記録 | 教育・引き継ぎに活用 |
| 言語トーン | 感情推定や顧客心理も可視化 | チーム全体で対応の温度感を合わせる |
| 振り返り | Chat検索で過去案件を参照 | AIが関与した意思決定を再利用可能 |
🔄 AIと共に考える文化の第一歩
このCrawl→Walk→Runモデルを実践することで、「AIに任せる」から「AIと考える」へと営業スタイルが変わります。
Geminiを通じてやりとりした議論や修正コメントが、そのまま営業判断の再現知(ナレッジログ)として積み上がっていく。
この蓄積こそが、CRMなしでもチームの強さを支える新しい形です。
5. ステップ 4:運用フロー —— Gmailで送信、Chatで思考を残す
ここまでの仕組みで、メールをChatに通知し、Geminiと共に返信を育てる流れが整いました。
このステップ 4では、その成果を「チーム全体のナレッジ」として定着させる運用の形をまとめます。
🧭 フロー全体の俯瞰
まずは今回の連携構造をおさらいしておきましょう。
| フェーズ | 主な内容 | 使用ツール・AI |
|---|---|---|
| ① 受信 | 顧客からのメールを受け取る | Gmail |
| ② 要約通知 | GASがメール内容をChatに自動通知 | Gmail × GAS |
| ③ 内容把握・方針整理 | Geminiがメールの要点・トーン・目的を理解 | Gemini(Chat) |
| ④ チームディスカッション | チームで返信方針を議論・ブラッシュアップ | Chat(Spaces) |
| ⑤ 最終確認・送信 | Gmailで最終文面を確認・送信 | Gmail(人の判断) |
この流れで重要なのは、「Gmailで送信したあとも、Chatに思考が残る」という点です。
この仕組みが生まれたことで、単なる通知ツールではなく、AIと人が共に考えた記録がチームに残ります。
💬 Chatは議論ログとして残す
メール送信後に「やりとりが終わる」と考えず、Chat上にGeminiとの議論や方針決定までの過程を残しておきます。
- 誰がどんな観点で判断したか
- Geminiがどんな提案を出したか
- チームがどのように修正したか
こうした情報を残すだけで、Chatが「CRM的な判断履歴」に変わります。
特に以下のようなスレッドタイトルを意識すると、検索性が高まります。
📂 [顧客名] 10月度対応 / Gemini議論ログ
AI提案・方針決定・最終文案をセットで残しておくことで、後から「なぜこの返信をしたのか」を誰でも追跡できます。
📧 Gmailで最終送信を行う理由
Chat上でAIにドラフトを作らせたとしても、送信操作は必ずGmail側で行うのがポイントです。
これはセキュリティ上の観点だけでなく、「人が最終判断した証跡」を残す意味もあります。
最終確認をGmailで行うことで、誤送信防止・承認フロー・署名設定など、既存ルールとの整合性を維持できます。
📘 ChatとGmailの使い分けルール(運用ガイド)
| 項目 | Gmail | Chat(Gemini含む) |
|---|---|---|
| 主な役割 | 顧客との公式対応 | 社内検討・方針整理・思考共有 |
| 操作主体 | 個人(担当者) | チーム全員(共有・議論) |
| AIの使い方 | 最終チェック(文面トーンなど) | 要約・提案・分類・ドラフト生成 |
| 残す内容 | 最終メールのみ | 判断・経緯・議論の全体像 |
この役割分担を明確にしておくことで、AI活用が「混乱を生む自動化」ではなく、秩序ある共同作業になります。
🧠 「思考の蓄積」がチームの武器になる
Geminiを含めたChat上のやり取りは、日々の返信内容、判断の軸、顧客対応の変遷を自然に記録していきます。
これは、従来のCRMで言う「活動履歴」を、AIが同席した思考記録として置き換えたものです。
- 新人が過去のChatスレッドを読むことで、対応パターンを学べる
- 類似案件の対応履歴をGeminiに参照させて再利用できる
- 定期的に「返信パターン」や「トーン分析」をGeminiに要約させることで改善も可能
これにより、「AIを使う」から「AIとチームを育てる」へと進化していきます。
💡 運用開始時にチェックすべき3項目
| チェック項目 | 内容 |
|---|---|
| ✅ トリガー頻度 | GASが10〜15分おきに動作しているか |
| ✅ Webhookの範囲 | Chat通知スペースが正しいか(権限確認) |
| ✅ フォルダ管理 | Chatスレッドに案件名・顧客名が明示されているか |
この3点を整えるだけで、初期運用でも擬似CRMとしての機能が十分に発揮されます。
🧩 最終まとめ —— 「返信を考える時間」がチームの知になる
GeminiとGASを組み合わせれば、メールとChatをつなぎ、チーム全体で返信を育てる仕組みを実現できます。
AIにすべてを任せるのではなく、AIが理解し、人が判断する往復の構造を設計する。
その過程に残る議論や修正の軌跡こそ、チームの再現性を支えるナレッジになります。
6. まとめ —— 「AIと考える」仕組みがチームを強くする
GASとGeminiを組み合わせることで、CRMがなくても「メール」と「チャット」をAIが理解できる形でつなぐことができました。
ここで重要なのは、自動化ではなく協働の設計です。
Geminiは返信を作るAIではなく、返信を一緒に考えるAI。
そのやりとりをChatに残すことで、チーム全員が同じ視点で判断を再現できるようになります。
メールは個人のやり取りからチームの知へ、Chatは会話の場からナレッジデータベースへ。
この変化こそ、AI時代の営業チームが強くなるための最初の一歩です。
💬 最終チェック
以下のチェックリストを、あなたの営業環境で一度確認してみてください。
- ☐ Gmailで受信した顧客メールを、GASでChatへ安全に通知する仕組みを構築したか?
- ☐ Chat上でGeminiを呼び出し、メール内容を要約・トーン分類・返信方針として整理したか?
- ☐ チームでGeminiの提案をレビューし、最終返信案を議論・改善したか?
- ☐ Gmailで最終確認・送信し、その判断過程をChatスレッドに残したか?
- ☐ Chatスレッドを擬似CRMとして活用し、過去対応や返信パターンを再利用できる状態を作ったか?
これらが揃えば、あなたのチームはすでに「話すたびに知識が蓄積する営業組織」へと進化しています。
🧩 3秒まとめ
| 観点 | 内容 |
|---|---|
| 思想 | AIは返信を代行する存在ではなく、チームの思考を育てるパートナー。判断の軌跡こそナレッジになる。 |
| 実務 | GASでメールをChatへ連携し、Geminiで方針整理、Gmailで送信。AIと人の往復が再現知を生む。 |
| 行動 | まずは1件のメールから。「通知→要約→議論→送信」をAIと一緒に回してみよう。 |
無料相談













