Gmail自動返信アプリ — SmartReply

実際のビジネスシーンで使える自動化100例をGASで実装するシリーズ「GAS自働化100本ノック」。その15本目

SmartReply は、Gmailの問い合わせメールに 内容ごとに適切な定型返信を自動で送る スプレッドシート版アプリです。

SmartReply ができること

  1. 問い合わせ内容ごとの返信文を自動送信 —「キーワード」と「本文」を`返信ルール` シートに書いておけば、資料請求・料金・採用・見積・FAQ ……何にでも応用できる
  2. 差し込み変数(`{{差出人名}}` `{{差出人メアド}}` `{{件名}}`) — 「丸山 様」「件名『◯◯』を承りました」のような個別感のある一次返信が出せる
  3. 元のスレッドに `Re:` 付きで返信 — 相手のGmailの会話表示が分断されない、自然な返信
  4. フォールバックルール — どのキーワードにも当たらないメールに「内容確認のうえ折り返します」のような汎用返信を出す
  5. 処理済ラベルで 二重返信を自動防止
  6. ドライラン — 実返信なしで「どのスレッドにどのルールが当たるか」を事前確認
  7. 時間トリガーで自動実行 — 指定間隔で新着メールに順次返信
  8. 全返信イベントを `返信ログ` シートに追記 — 監査・FAQ整備のヒント抽出に利用
  9. 全体エラー(設定不足・シート欠落など)は `エラー` シートに記録

動作要件

  • Googleアカウント
  • Gmail / Spreadsheet の編集権限

インストール手順

  1. 新規Googleスプレッドシートを作成
  2. メニュー「拡張機能 → Apps Script」を開く
  3. デフォルトの `コード.gs` の内容を、本記事の有料版 `コード.gs` で上書き保存する
  4. 「ファイル → +」でファイルを追加し、本記事の有料版 `セットアップ.gs` で上書き保存する
  5. プロジェクト名を任意に設定して保存
  6. スプレッドシートを再読み込み → メニュー「SmartReply」が表示される
  7. メニュー「初回セットアップ」を実行 → 認証ダイアログで承認(承認手順は第1回と同じ)。

初回セットアップ

メニュー「SmartReply → 初回セットアップ」を実行すると、以下の4シートが自動生成されます。
シート名の先頭 `SR_` は SmartReply の略で、同じスプレッドシートで他のアプリと同居しても衝突しないようにするための識別子です。

  • `SR_設定` — 検索クエリ・処理済ラベル・上限値などを入力
  • `SR_返信ルール` — キーワード/件名(メモ)/本文 の対応表(サンプル5行入り)
  • `SR_返信ログ` — 返信イベント履歴(自動記録)
  • `SR_エラー` — 全体エラー履歴(自動記録)

各シートの詳細は下記の `SR_設定 シート` / `SR_返信ルール シート` / `SR_返信ログ シート` / `SR_エラー シート` の各セクションを参照してください。

基本の使い方

  1. `SR_設定` シートの 検索クエリ を自分の窓口宛アドレスに書き換える(例: `to:contact@自社ドメイン`)
  2. `SR_返信ルール` シートのキーワードと本文を、自社の問い合わせパターンに合わせて編集
  3. メニュー「ドライラン」で「どのスレッドにどのルールが当たるか」を実返信なしで事前確認
  4. 当たり方に納得したら、メニュー「受信メールに自動返信」を実行
  5. 運用に乗せるならメニュー「自動実行 ON」で時間トリガー登録

SR_設定 シート

検索クエリ・処理済ラベル名・1回の返信上限・自動実行間隔 などアプリ動作のすべての設定を、このシートに A列キー/B列値 で入力します。

SR_設定シートの例

入力項目

  • 検索クエリ (必須) … Gmailの検索バーで使うのと同じ書式。下記「検索クエリの書き方」参照
  • 処理済ラベル (必須) … 自動返信したスレッドに付ける目印のラベル名。存在しなければアプリが自動作成
  • 1回の返信上限 … 1回の実行で返信する最大件数(1〜100、デフォルト30)。GAS6分制限と無料Gmailの1日100通上限の両方を超えないための上限
  • 自動実行間隔(分) … 自動実行ON時の実行頻度(自動実行設定の詳細は下記)

検索クエリの書き方

  • 専用窓口アドレスがある → `to:contact@example.co.jp`
  • 件名で識別できる → `subject:お問い合わせ`
  • 差出人ドメインで識別できる → `from:example.co.jp`
  • 過去N日に絞る → 上記に `newer_than:7d` を空白でつなぐ(AND検索)
  • 複数条件の OR → `(subject:お問い合わせ OR subject:資料請求)`

検索クエリでは どのメールに自動返信を出すか を決め、 どの返信文を返すか は `SR_返信ルール` 側のキーワードで決める、という2段構えです。
クエリで広く拾い、ルールで細かく出し分けるのが運用のコツです。

処理済ラベル名

自動返信したスレッドに付ける目印のラベル名です。
存在しなければアプリ起動時に自動作成されます。
シンプル名(例: `返信済`)でも、ネスト形式(例: `問い合わせ/返信済`)でも動きます。

  • このラベルが付いているスレッドは、次回以降の検索から自動的に除外される(二重返信防止)
  • 「もう一度自動返信を出したい」時は、Gmail でそのスレッドから処理済ラベルを手で外して再実行する
  • ラベル名は1アプリ1個固定。他アプリの処理済ラベルとは別名にする(衝突回避)

自動実行の設定

  1. `SR_設定` の `自動実行間隔(分)` に数値を入力(例: 60)
  2. メニュー「自動実行 ON」を実行 → 確認ダイアログで間隔を確認して `YES`
  3. オフにする時はメニュー「自動実行 OFF」

手動でトリガーを変更したい時

メニューを使わずに自分でトリガーを編集することもできます。

  1. GASエディタの左サイドバー「⏰ トリガー」を開く
  2. 既存トリガーは右側の ✐ マークから編集、`…` メニューから削除
  3. 新規は「+ トリガーを追加」で `runAuto` 関数・時間主導型・希望の間隔を選択して保存

SR_返信ルール シート

問い合わせ内容ごとの キーワード → 返信本文 の対応表を、1行1ルールで入力するシートです。
本アプリの動作を決定づける最重要シート で、ここの書き方次第で「どのメールに何を返すか」が変わります。

SR_返信ルールシートの例
  • A列「キーワード」 — 受信メールの「件名+本文」にこの文字列が含まれていれば、その行のルールが採用される(部分一致)
  • B列「件名(メモ用)」 — 表示・確認用のメモ。実際の送信件名としては使われない(元の件名に `Re:` を自動付与する設計のため)。
  • C列「本文」 — 実際に送られる返信文。`{{差出人名}}` `{{差出人メアド}}` `{{件名}}` の差し込み変数が使える

キーワードの優先順位

ルール配列は シートの上から順に検査 され、 最初に当たった行が採用 されます。
「見積」と「料金」の両方が含まれるメールには上にあるルールが当たるので、 より具体的なキーワードを上に、より汎用的なキーワードを下に 並べると意図通りに動きます。

フォールバックルールの使い方

`SR_返信ルール` の キーワード列を空欄 にした行は、 どのキーワードにも当たらなかった時のデフォルト返信 として扱われます。

  • 「何が来ても必ず一次返信は出す」 運用 — フォールバック行あり
  • 「ルールに当たったメールだけ自動応答、それ以外は担当者判断」 運用 — フォールバック行なし

差し込み変数の書き方

C列(本文)に以下3種類の差し込み変数を書けます。

  • `{{差出人名}}` — Gmailの `From:` ヘッダーから氏名部分を抽出。`"丸山太郎" maruyama@example.co.jp` → `丸山太郎`。
    氏名部分がなくメアドのみの差出人 の場合は 自動で`{{差出人メアド}}` にフォールバックする(「 様」だけになるのを防ぐ)
  • `{{差出人メアド}}` — `From:` ヘッダーからメアド部分を抽出
  • `{{件名}}` — 元メールの件名そのまま

本文を複数行で書く

`SR_返信ルール` のC列(本文)に複数行を入れる時は、セル内で `Alt+Enter` で改行します。
本文末尾に署名や「※本メールは自動送信です」のような注記を入れておくと、自動応答であることを相手に明示できて誤解を生みにくくなります。

ルール追加・編集の流れ

  1. シートに新しい行を追加し、キーワード・本文を入力
  2. メニュー「ドライラン」で、新しいルールが意図通りのメールに当たるか確認
  3. 必要なら順序を入れ替え(上の行ほど優先)
  4. 問題なければメニュー「受信メールに自動返信」で本番実行

SR_返信ログ シート

メニュー実行で返信した 全イベントが1行ずつ追記 されます。

各列の見方

  • 返信日時 — このアプリが返信を送った時刻
  • 受信日時 — 元の問い合わせメールの受信時刻
  • 差出人名・差出人メアド — 元メールの `From:` ヘッダーから抽出
  • 件名 — 元メールの件名(`Re:` は付かない、元の件名そのまま)
  • ヒットしたキーワード — 採用されたルールのキーワード。フォールバックが採用された時は `(フォールバック)`
  • スレッドURL — Gmail のそのスレッドへの直リンク(クリックでGmailが開く)

ログから読み取れること

  • キーワード別の発火回数 — `COUNTIF` などで月次集計すれば「FAQの整備候補(よく聞かれる順)」が分かる
  • `(フォールバック)` の比率 — 全返信のうち30%以上がフォールバックなら、自動応答で拾えていない問い合わせパターンが増えているサイン。新しいキーワードを追加する判断材料
  • 受信日時 → 返信日時の差 — 自動応答が「どれくらい速く一次返信を出せているか」のSLA確認に使える
  • スレッドURL — 「先月の◯◯さんへの自動返信、何で当たった?」のような遡及確認に使う(クリックで該当 Gmail スレッドへ)

ログのクリア

メニュー「返信ログをクリア」 で全件削除できます。

SR_エラー シート

設定欠落・シート欠落・想定外例外などの 行に紐づかない全体エラー を発生順に記録します。
個別スレッドへの返信失敗(権限エラー等)もここに記録されます。


コード.gsとセットアップ.gsは以下より

この記事の続きはnoteで公開しています。

noteで続きを読む

GAS,自動化自動化

Posted by botw