AppSheetでGmail受信をトリガーにして自動化
2025年2月7日、AppSheetに於いて「AutomationにてGmailの受信をトリガーにして自動化」という割と大きなアップデートが来ました。以前、Google Formをトリガーにして自動化がこのサイトでAppSheetを取り扱うキッカケになりましたが、今回のこのアプデはデータソースとしてGmailに連結するのではなく、あくまでもGmail受信をトリガーにして発動するタスクランナーによる自動化と同じ仕組みです。
この機能の使い方について学習するため、今回調べてまとめてみました。この内容に関するドキュメントはこちらになります。
図:Gmailをトリガーに出来る
目次
今回利用するファイル等
- Gmailトリガー - AppSheet
- Gmailトリガー記録用 - Google Spreadsheet
なるべく今回は学習用ですので単純に作っています。このトリガーの使い所は、受信をキッカケに発動するので、例えば外部向けに公開してる「お問い合わせフォームからのメール」などが到着したら、自動応答メールを送りスプシに記録しタスクとして登録するといったような一連の流れを構築可能です。
Google Formの場合はこの流れを前回の記事で実現できますが、外部向けフォームがGoogle Formではないであったり、またフォームからのメールとは限らないわけです(システムからの発報通知メール等)。故に利用するシーンは結構あるのではないかと思います。
計画では将来的に添付ファイルの処理なども装備されるみたいなことが書かれているのでまだまだ将来が楽しみな機能です。
作成方法
概要
今回はユーザからフォーム問い合わせを元にメールが飛んできます。そのメールを受信トレイで受信した場合、Gmailでラベルを付けて、そのラベルを基準にトリガーが発動する仕掛けになっています。
よって、フォーム問い合わせのメールについてはフォーム側、Gmail側でそれぞれ仕掛けが必要になります。
※ちなみにこのAutomation部分はアプリをデプロイしていなくても作動しますので注意が必要です。
※メールの委任を利用してる場合、そのケースでも動くのか?といったら動きません。
※メールにラベルを付与すると発動しますが、一方でメールからラベルを削除する場合のアクションも作成可能です。
事前準備
フォーム側
自分のサイトのフォームはGoogle Formの魔改造版を使ってるので、それほど難しくないですが送信するフォームがGoogle Formとは限りません。WordPressのフォームプラグインかもしれませんし外部のサービスかもしれません。
そこで後述のメールフィルタに合致するように修正を行うか?メールフィルタ側で合わせてあげます。今回の場合フォーム側ではフィルタリング出来るように以下のような設定になっています。
- メールタイトルは「お問い合わせ内容自動応答メール」である
- 送信元メールアドレスはnoreply@xxxx.comとして固定化してある
- 対象の自動応答メールのToは送信主のメアドである
この2つをもって、メールを送信するように変更を加えておきましょう。
メールフィルタ
この機能は特定のアカウントに到着したメールに対しての「ラベル」で発火する仕掛けになっています。もちろん受信トレイもラベルの1つなので受信トレイに到着しただけでも発火はできますが、区別ができないと全部に対して発火してしまうので、問い合わせメールについてはメールフィルタを作っておきます。
自分の場合、問い合わせフォームからのメールには「お問い合わせ内容自動応答メール」という内容で自分に通知が飛んでくるようにしている為、このタイトルを元にフィルタを作って、自動でラベルを付けるようにします。あらかじめ、左サイドバー下のラベルにて、「お問い合わせ」というラベルを作っておきましょう。
- Gmailで該当のメールを開く
- メール上部にあるメニューアイコンから「⋮」をクリックする
- メールの自動振り分け設定をクリックする
- Fromのアドレスは固定なのでそれを入力しておきます。
- 件名に「お問い合わせ内容自動応答メール」と入れておきます。
- フィルタを作成をクリックする
- 次の画面では、自分自身は受信トレイをスキップにチェックしています。
- ラベルを付けるでは、「お問い合わせ」というラベルを選択します。
- フィルタを作成をクリックします。
これで、メールフィルタが完成したので、試しにフォームから送信してみて無事にフィルタリングされるかどうか?を確認してみましょう。
※但し既存の固有のラベルの場合、Googleアカウントの言語設定で英語にしてしまうとラベル名が英語に変わり動作に支障が出そうなので自前でラベルは作りましょう。
図:基準となるメール
図:メールフィルタを作成開始
図:フィルタ作成完了
Automationの作成
イベントの作成
事前準備が整ったらスプシに対して記録する用の列を用意し、AppSheetのアプリを作成します。そのアプリに対して以下の手順でAutomationを作成していきます。
- AppSheet開発画面の左サイドバーのAutomationをクリックする
- Create my first Automationをクリックする
- Create a new botをクリックする
- Confiture Eventをクリックする
- Create a new eventをクリックする
- Event Nameは適当にセットします。
- Event SourceではGmailを選択します。
- Gmail Accountではメールを受信してるアカウントを指定します。通常作成者とAppSheetアプリ作成者がイコールならばそのアドレスが出てきます。
- Label to watchでは作成したラベルを指定します。今回であれば「お問い合わせ」を指定します。
図:イベントを作成します。
処理ステップを作成する
さてこれでトリガーすることはできました。その後の処理をここから作成していきます。受信したメールの内容をAppSheetで取得することが出来るのでその内容をデータソースに入れ込んでいく処理をここでは作成します。
注意点として今回のケースの場合自動応答メールに対してアクションを起こしてるのでデータソースの型がEmailだとエラーになります(複数宛先入れられるためList型であるため)。自分の場合Text型にしてクリアにしましたが、複数宛先があって長い場合はLongText型に。メール本文も長い場合はTextでは収まらないので、LongText型に変更しておきましょう。
- Add a stepをクリックします
- Create a new stepをクリックします。
- Run a data actionに変更します。
- Add new rowsのままで、Add row to this labelでは挿入先テーブルを指定します。これで受信内容を取得して行としてデータソースに追加できます。
- 今回の事例の場合、IDがデフォルトでありますがここはすでにUNIQUEID関数がデータソース側にあるので不要です。
- Addボタンをクリックしてどの内容を取得するか?を1個ずつ列に割り当てます。
- メアドを選択し、隣の入力欄をクリックします。
- Gmail Event Emailという特殊なテーブルが出てくるので、その中から[ToAddresses]を選択します。
- 同様にタイトル(Subject)、日時(Date)、内容(Body)を割り当て、ステータスはデフォルトで「未処理」を入れるようにしました。
- 右上のSAVEをクリックする
これでイベントとその処理内容が装備できました。実際にメールを再度フォームから送ってどのような挙動になるのか?テストしてみましょう。
図:データソースの型がEmailだとエラーになる
図:メール内容を取得することが可能
図:特殊テーブルから取得対象を選ぶ
使ってみた
まずは普通にテスト
実際にすべての準備が整ったのでお問い合わせフォームからメールを送ってみました。無事にメールにはメールフィルタで自動で「お問い合わせ」のラベルが付き、それをトリガーとしてAppSheetのAutomationが発火。スプシにメールの内容が自動的に登録されました。
もちろんこのイベントに続けて別の処理を行わせても良いですし、GASなどの処理を連結して外部のサービス(例えばBacklogなど)に飛ばすように処理しても面白いでしょう。
これでGmailの受信→ラベル付与をキッカケにしてAppSheetのタスクランナーによる自動化が無事に装備できました。
また、Google Formから送信時に自動応答メールの送信やそのデータをGASで拾って書き込むなどの処理も過去していましたが、こちらはGAS無しで実現できますので随分楽に装備が出来るのではないかと思います。
※同じデータソースを使ってそのまま問い合わせタスク管理アプリとして機能を追加すると尚良いでしょう。
図:メールフィルタされた結果
図:無事にデータを取得してスプシに入ってきた
グループアドレス非対応なので
今回のこの機能は「受信した時にラベル付与時に発火する」仕組みである為、グループアドレス宛にフォームやシステム発報が送られている場合には対応ができません。よって、共同トレイを利用して外部からの問い合わせ対応してる組織や前述にもある代表のメールボックス(ここに受信)に対してメールの委任をしてる場合、発火させることができない。
組織で運用する場合、個人アカウントでアプリを作って運用してしまうと後が大変なので、そういった事まで勘案すると以下のような構築を行うと良いと思います。
- 専用のアカウントを用意して、グループアドレスに含める
- この専用アカウントにてアプリを作成し、自身が受信したときに発火するようにアプリを構築する
- この専用アカウントのGmailにてグループアドレスをエイリアスとして追加する
- 自動応答のメールはグループアドレスをFromにしてAppSheetからは送れないので、GASとエイリアス設定を利用してこの専用アカウントから送信する
他のメンバーはグループアドレスに含めているハズなので、顧客からのメールには気がつくハズ。そしてアプリを開いて顧客メールに対応し、GASでメールをリプライするという流れです。共同トレイ運用をやめて、AppSheet上で対応者のアサインや処理の状況を管理するように作り込みをすると尚良いでしょう。