AppSheetで申請管理や日報アプリを作ったものの、「登録後の連絡を毎回手作業で送っている」「承認者へのメールを忘れてしまう」と悩んでいないでしょうか。AppSheetのAutomationを設定すると、行の追加やステータス変更をきっかけに、担当者や申請者へメールを自動送信できます。ただし、送信条件を曖昧にすると、同じメールが何度も届いたり、意図しない相手へ送信されたりするため注意が必要です。ここでは、Automationの仕組みから実際の設定手順、条件式、テスト方法、よくある失敗まで、初心者にもわかるように図解を交えて解説します。

👑アプリへの入力は楽になりましたけれど、登録後のメールまで手作業では、まだ少し手間が残りますわね。

🤖Automationを使えば、データの追加や変更をきっかけに、AppSheetからメールを自動送信できます。

👑それなら、申請の見落としや連絡忘れも減らせそうですわ。設定は難しくありませんの?

🤖Bot、Event、Process、Taskの役割を順番に理解すれば、初心者の方でも設定できます。重複送信を防ぐ条件も確認いたしましょう。
AppSheetのAutomationとは
AppSheetのAutomationは、アプリ内で特定の出来事が発生したときに、あらかじめ決めた処理を自動実行する機能です。メール送信だけでなく、通知、データ更新、ファイル作成、Webhookの呼び出しなどにも利用できます。
Automationの基本構造は、Bot、Event、Process、Taskの4つです。Botが自動化全体を管理し、Eventが開始条件、Processが処理の流れ、Taskが実際に行う作業を表します。
| 構成要素 | 役割 | メール送信での例 |
|---|---|---|
| Bot | 自動化全体を管理する | 承認依頼メール送信Bot |
| Event | 処理を開始する条件を決める | 申請データが追加されたとき |
| Process | 実行する処理の順番を管理する | メール送信後に通知済みへ更新する |
| Task | 個別の作業を実行する | 承認者へメールを送信する |
たとえば、経費申請アプリで新しい申請が登録された場合、「申請が追加された」というEventを検知し、Process内の「承認者へメールを送る」というTaskを実行します。


👑最初は名前が多くて複雑に見えますけれど、「いつ動くか」と「何をするか」に分けるだけですの。まずは1通のメール送信から試してくださいませ。
AppSheetの自動メール送信が役立つ業務
自動メール送信は、単に連絡作業を減らすだけではありません。連絡のタイミングを統一し、担当者による対応のばらつきを抑える効果もあります。
申請・承認業務
休暇申請、経費申請、備品購入申請などが登録されたときに、承認者へ自動でメールを送ります。承認後は申請者へ結果を返す設定も可能です。
問い合わせ管理
問い合わせフォームから新しいデータが追加された際に、受付完了メールを顧客へ送り、同時に担当部署へ対応依頼を送信できます。
日報・点検報告
日報が提出されたときに上司へ知らせたり、点検結果が「異常あり」になった場合だけ責任者へ送信したりできます。
在庫不足の連絡
在庫数が発注点を下回ったときに、購買担当者へ補充依頼を送る運用です。ただし、在庫数が更新されるたびに送られないよう、送信条件を慎重に設定する必要があります。
期限前のリマインド
Scheduled eventを利用すると、毎日決まった時刻に対象データを確認し、期限が近い案件や未対応の申請を担当者へ知らせる仕組みも作れます。
| 業務 | 開始条件 | 主な送信先 |
|---|---|---|
| 経費申請 | 申請データの追加 | 承認者 |
| 承認結果通知 | ステータスの変更 | 申請者 |
| 問い合わせ受付 | 問い合わせの追加 | 顧客、担当部署 |
| 異常報告 | 判定が異常になったとき | 管理者 |
| 期限通知 | 指定日時への到達 | 案件担当者 |
設定前に用意するデータ
Automationを作り始める前に、送信先と送信条件に必要な列をテーブルへ用意します。画面設定より先にデータ構造を整えておくと、条件式がシンプルになり、運用後の修正も少なくなります。
申請承認メールを作る場合は、次のような列があると設定しやすくなります。
| 列名 | データ型の例 | 用途 |
|---|---|---|
| 申請ID | Text | 申請を識別するキー |
| 申請者名 | NameまたはText | 件名や本文への差し込み |
| 申請者メール | 結果通知の送信先 | |
| 承認者メール | 承認依頼の送信先 | |
| 申請内容 | LongText | メール本文に表示する内容 |
| ステータス | Enum | 承認待ち、承認、差し戻しなどを管理 |
| 申請日時 | DateTime | 申請された日時を記録 |
| 通知済み | YesまたはNo | 重複送信を防止 |
メールアドレス列はEmail型にする
申請者メールや承認者メールをText型にしても送信できる場合はありますが、入力ミスを減らすにはEmail型が適しています。AppSheet側でメールアドレスとして扱われるため、入力画面でも用途がわかりやすくなります。
送信先を設定画面へ直接書き込まない
担当者が変わるたびにAutomationを編集する運用は避けた方が安全です。承認者メールをテーブルや社員マスタに保存し、行ごとに適切な宛先を取得できる構成にすると、異動や担当変更にも対応しやすくなります。
最初は自分のメールアドレスで試す
実際の承認者や顧客を送信先にする前に、テスト用データと自分のメールアドレスを使用します。件名、本文、差し込み値、改行、送信回数を確認してから対象者を広げてください。

👑自動化の失敗は、画面操作よりも元データの不足から起こりやすいですわ。誰に、どの条件で、何を送るのかを先に表へ整理しておきましょう。
AppSheetで自動メールを送信する設定手順
ここからは、申請データのステータスが「承認待ち」になったとき、承認者へメールを送る例で設定します。AppSheetの画面は更新されることがあるため、表示名や配置が異なる場合は、最新情報を公式ヘルプでも確認してください。
手順1:AutomationからBotを作成する
- AppSheetの編集画面を開く
- 左側メニューからAutomationを選択する
- Botsを開く
- 新しいBotを作成する
- Bot名を「承認依頼メール送信」など、目的がわかる名前に変更する
Bot名を「Bot1」のままにすると、複数の自動化を作った後に用途がわからなくなります。「対象業務・開始条件・処理内容」が伝わる名前にしておくと管理しやすくなります。
手順2:Eventを設定する
Eventでは、メール送信を開始するタイミングを決めます。アプリ内のデータ変更をきっかけにする場合は、対象テーブルと変更種類を設定します。
- Configure eventを選択する
- Event sourceでAppを選択する
- 対象の申請テーブルを選択する
- Data change typeでUpdatesを選択する
- Conditionへステータス変更の条件を設定する
App eventでは、アプリを通じて行われた追加、更新、削除を開始条件として選択できます。Googleスプレッドシートを直接編集した変更は、通常のApp eventでは想定どおりに動かない場合があり、外部からの変更を検知するための追加設定が必要です。
ステータスが承認待ちへ変わったときだけ送信する条件例は、次のとおりです。
AND(
[_THISROW_AFTER].[ステータス] = “承認待ち”,
[_THISROW_BEFORE].[ステータス] <> [_THISROW_AFTER].[ステータス]
)
この条件では、更新後のステータスが「承認待ち」であり、更新前と更新後の値が異なる場合だけBotが動きます。関係のない列を編集しただけで同じメールが再送される問題を抑えられます。更新前と更新後の値は、Automationの開始条件やメールテンプレートで利用できます。

手順3:ProcessにTaskを追加する
- Eventの後にあるProcessを選択する
- Add a stepを選択する
- Run a taskを選ぶ
- Task typeでSend an emailを選択する
- Task名を「承認者へ申請メール送信」などに変更する
将来的に「メール送信後に通知済みをYesへ更新する」「承認履歴を追加する」といった処理を増やす場合も、ProcessへStepを追加して順番に実行できます。
手順4:送信先を設定する
Toには固定のメールアドレスだけでなく、テーブル内のEmail列や式を指定できます。承認者メール列を使用する場合は、Toへ次のように設定します。
[承認者メール]
CC、BCC、Reply ToなどはAdvanced settingsから設定できます。Toの初期値にはアプリ所有者のメールアドレスが使われ、無料アカウントでは送信先がアプリ所有者に制限されます。実際の利用者や顧客へ送る場合は、利用中のプランと送信上限を確認してください。
手順5:件名を作成する
件名には固定文とテーブル内の値を組み合わせられます。申請者名や申請IDを含めると、受信者が内容を判断しやすくなります。
【承認依頼】<<[申請者名]>>さんから申請が届きました
同じ種類のメールが多い業務では、申請IDも加えると検索しやすくなります。
【承認依頼・<<[申請ID]>>】<<[申請者名]>>さんから申請が届きました
手順6:本文を作成する
Email Bodyへ文章を入力し、必要な列を差し込みます。受信者がメールだけで概要を把握できるよう、申請者、申請日時、申請内容、現在のステータスを含めます。
新しい申請が登録されました。
申請ID:<<[申請ID]>>
申請者:<<[申請者名]>>
申請日時:<<[申請日時]>>
申請内容:<<[申請内容]>>
ステータス:<<[ステータス]>>
内容をご確認のうえ、アプリから承認または差し戻しを行ってください。
Email Bodyへ直接入力する方法のほか、テンプレートを指定して本文を作成する方法もあります。帳票や複雑なレイアウトが必要になるまでは、編集しやすい直接入力から始める方が迷いにくいでしょう。
手順7:保存してプレビューを確認する
- AppSheetの設定を保存する
- Preview emailを選択する
- 差し込み値が正しいか確認する
- 件名と本文に空欄がないか確認する
- テスト用データでBotを実行する
メールのプレビューには対象テーブルのレコードが使用されます。変更内容を反映したプレビューを表示するには、先にアプリを保存する必要があります。

重複送信を防ぐための設定
AppSheetのメール自動送信で特に多い失敗が、同じデータに対する重複送信です。Data change typeをUpdatesにしただけでは、メモや担当者など別の列を変更した際にもBotが実行される可能性があります。
更新前と更新後の値を比較する
ステータス変更時だけ動かしたい場合は、更新前と更新後の値を比較します。
AND(
[_THISROW_AFTER].[ステータス] = “承認”,
[_THISROW_BEFORE].[ステータス] <> [_THISROW_AFTER].[ステータス]
)
この条件なら、すでに承認済みのデータで別の列を修正しても、承認完了メールは再送されません。
通知済み列を用意する
さらに確実に管理したい場合は、「通知済み」というYesまたはNo型の列を用意します。Event条件に通知済みがNoであることを加え、メール送信後に通知済みをYesへ更新します。
AND(
[ステータス] = “承認待ち”,
NOT([通知済み]),
ISNOTBLANK([承認者メール])
)
ただし、通知済み列を同じBotで更新すると、その更新自体が新たなEventになる設計もあります。開始条件に通知済みがNoであることを含め、再実行されてもメール送信処理へ進まない構成にしてください。
送信対象の列が空欄でないことを確認する
宛先が空欄の行まで処理しようとすると、エラーの原因になります。ISNOTBLANKを使い、メールアドレスが入力されているデータだけを対象にします。
大量データへ一斉送信しない
初回設定時に既存データをまとめて更新すると、多数のメールが一度に送られることがあります。導入時はBotを無効にした状態でデータを整え、テスト用の数件だけで確認してから有効にする流れが安全です。


👑「承認済みなら送る」だけでは、別の項目を直したときにも送信されることがありますの。値が変わった瞬間だけ動かす設計が安心ですわ。
メール送信をテストする方法
設定後に1通届いただけで完了と判断せず、送信すべきケースと送信してはいけないケースの両方を確認します。
| テスト内容 | 期待する結果 |
|---|---|
| 新規申請を登録する | 設定した条件に応じて1通だけ届く |
| ステータスを承認待ちへ変更する | 承認者へメールが届く |
| 承認待ちのままメモだけ変更する | メールは再送されない |
| 承認者メールを空欄にする | 送信処理を行わない |
| 承認者メールを誤った形式にする | 入力時に修正できる |
| 同じ操作を連続して行う | 不要な重複送信が発生しない |
| スマートフォンから同期する | 同期後にBotが実行される |
Automation Monitorを確認する
メールが届かない場合は、Botの設定画面からMonitorを開きます。Automation Monitorでは、Botの実行が成功したか、エラーになったか、処理中かを確認できます。
エラーが表示された場合は、次の順番で確認すると原因を切り分けやすくなります。
- Eventが実行されているか
- ConditionがTrueになっているか
- ProcessのStepが実行されているか
- Toに有効なメールアドレスが入っているか
- 件名や本文の式でエラーが出ていないか
- 利用プランや送信上限に該当していないか
Botを一時的に無効化する
本番データの修正や大量更新を行うときは、必要に応じてBotを一時的に無効化します。作業後に条件を再確認し、テストデータで動作を確かめてから有効に戻してください。
メールが送信されないときの確認項目
| 症状 | 主な原因 | 改善方法 |
|---|---|---|
| Botが動かない | Eventのテーブルや変更種類が違う | 対象テーブルとAdds、Updatesを確認する |
| 条件に一致しない | Enumの値や表記が異なる | 全角・半角、空白、選択肢名を確認する |
| 宛先エラーになる | メール列が空欄または形式不正 | Email型とISNOTBLANK条件を設定する |
| 差し込みが空欄になる | 列名の指定ミス | 実際の列名とテンプレートを照合する |
| 同じメールが何度も届く | Updatesのすべてを対象にしている | 更新前後の値を比較する |
| 外部利用者へ届かない | 無料アカウントの送信制限 | プランと送信可能な宛先を確認する |
| シートを直接編集しても動かない | App eventの対象外になっている | アプリ経由で更新するか外部変更用の設定を行う |
| 古い内容で届く | 同期前または保存前に確認している | 保存と同期を行ってから再テストする |

実務で失敗しにくい運用の考え方
すべての連絡を自動化しない
定型的な受付連絡や承認依頼は自動化に向いています。一方、クレーム対応、契約条件の変更、個別判断を伴う差し戻しなどは、人間が内容を確認してから送る方が安全です。
メール本文へ機密情報を載せすぎない
個人情報、金額、契約内容などを本文へ詳しく載せると、誤送信時の影響が大きくなります。メールには申請IDや概要だけを記載し、詳細はログイン後のアプリで確認する設計も検討してください。
送信履歴をデータとして残す
通知済みのYesまたはNoだけでなく、通知日時や通知種別を記録すると、問い合わせへの対応がしやすくなります。
- 承認依頼送信日時
- 承認結果送信日時
- 送信先メールアドレス
- 送信した通知の種類
- 再送回数
担当者ではなく役割で管理する
Automationに個人のメールアドレスを固定すると、退職や異動のたびに修正が必要です。社員マスタや承認ルート表を作成し、部署、役職、申請区分などから送信先を決める構成の方が長期運用に向いています。
最初は1つの通知だけで運用する
申請受付、承認依頼、期限通知、承認結果、未対応リマインドを一度に作ると、どのBotに問題があるのかわかりにくくなります。最初は承認依頼メールだけを作り、安定後に処理を追加してください。

👑自動化は数を増やすほど良いわけではありませんの。連絡漏れが起きやすく、内容が定型化できる作業から少しずつ任せるのが上手な進め方ですわ。
AppSheetのメール送信が向いている人と向いていない人
| 向いているケース | 向いていないケース |
|---|---|
| AppSheet内の登録や更新を起点にしたい | 複雑なHTMLメールを大量配信したい |
| 申請や報告の連絡漏れを減らしたい | メールマーケティングを行いたい |
| 行ごとに送信先や内容を変えたい | 細かな配信分析が必要 |
| コードを書かずに業務フローを作りたい | 外部サービスとの複雑な連携が中心 |
| 少人数で段階的に運用したい | 短時間に非常に多くのメールを送りたい |
AppSheetアプリ内のデータ変更と連動する通知であれば、Automationが扱いやすい選択肢です。一方、複雑な送信処理、独自のエラー制御、大量配信が必要な場合は、GASや専用のメール配信サービスも比較した方がよいでしょう。
よくある質問
AppSheetの無料版でもメールを自動送信できますか?
テストはできますが、無料アカウントではメールの送信先がアプリ所有者に制限されます。社内メンバーや顧客へ実際に送る場合は、利用プランと最新の制限を公式サイトで確認してください。
Googleスプレッドシートを直接編集してもメールは送信されますか?
通常のApp eventは、AppSheetアプリを通じた変更を対象とします。スプレッドシート側の直接編集を開始条件にしたい場合は、外部データ変更を検知するための設定が別途必要です。
複数人へ同じメールを送れますか?
To、CC、BCCへ複数の宛先を設定できます。ただし、個人情報保護の観点から、顧客同士のメールアドレスが見えないよう、用途に応じてBCCや個別送信を選んでください。
メールにPDFを添付できますか?
Attachment設定からテンプレートを指定し、PDFなどのファイルを生成して添付できます。最初は本文だけのメールを完成させ、動作が安定してから添付処理を追加すると原因を切り分けやすくなります。
メール本文に申請データを表示できますか?
<<[列名]>>の形式で、対象行の値を件名や本文へ差し込めます。列名の変更後はテンプレート側も修正が必要です。
メールが2回送られるのはなぜですか?
Data change typeでUpdatesを指定し、ステータスが承認済みであることだけを条件にすると、別の列を編集した際にも再実行されます。更新前と更新後のステータスを比較してください。
指定時刻にリマインドメールを送れますか?
Scheduled eventを利用すると、毎日や毎週などの決められた時刻に対象データを確認できます。未対応案件や期限が近いデータだけを抽出する条件も必要です。
AppSheetとGASのどちらでメールを送るべきですか?
AppSheet内の操作を起点に、コードを書かず設定したい場合はAutomationが向いています。複雑な処理、独自の送信制御、複数サービスとの連携が必要な場合はGASも候補になります。
おすすめAIツール
Automationで使用するメールの件名や本文を作る際は、ChatGPTなどの生成AIを下書き作成に利用できます。「申請承認メールを100文字程度で作成」「受信者が次に行う操作を明記」と指示すると、文章作成の時間を減らせます。
条件式の意味を整理したり、テスト項目を洗い出したりする用途にも役立ちます。ただし、生成された式が自分のテーブル名や列名に合っているとは限りません。メールアドレス、機密情報、送信条件は、人間が実データを使って確認してください。
関連記事
- AppSheetの始め方|初心者でも業務アプリを作れる基本手順をわかりやすく解説
- AppSheetとは?できること・料金・始め方を初心者向けに解説
- AppSheetで在庫管理する方法|Googleスプレッドシート連携で入出庫・在庫数をアプリ化する手順
- AppSheetで日報管理する方法|Googleスプレッドシート連携で報告業務を効率化
- GASでメール自動送信する方法|初心者でもできるGoogle Apps Script自動化入門
まとめ
- AppSheetの自動メール送信は、Bot、Event、Process、Taskの4要素で構成するのでございます。
- 送信先はEmail列で管理し、最初は自分のアドレスを使ってテストするのでございます。
- 更新前後の値や通知済み列を利用すると、同じメールの重複送信を防ぎやすくなります。
- Automation Monitorで実行結果を確認し、少人数の業務から段階的に運用するのでございます。
最初から複雑な承認フローを完成させる必要はありません。まずは「申請が登録されたら自分へ1通送る」という小さなBotを作り、条件、送信先、本文、実行履歴を確認してください。安定してから承認結果通知や期限リマインドを追加すると、トラブルを抑えながら実務に合った自動化へ育てられます。



