AppSheetでGoogle Form送信をトリガーにしてメール送信
自分はローカライズされていないAppSheetにあまり今は力入れていないのですが、業務上で取り扱わなければならなくなったので、ブログでもAppSheetテクニックをこれから作ろう、という取っ掛かりとして「AppSheetにて、Google Form送信をトリガーに通知メールを送る」というものを作ってみました。
Available in open beta: Build AppSheet automations using Google Formsというニュースが2024年5月1日にあり、丁度自分のテナントでは使える状態にあったので、テストも兼ねています。以下のエントリーは初期の頃のものなので、だいぶ変わっている印象があります。
目次
今回利用するサービス
- キノコ料理送信フォーム - Google Form
- AppSheet
自分のテナントはAppSheetに対してはCoreライセンスしかないのでその範囲内で作っています。
フォームとAppSheetの連携
概要
2024年5月1日、AppSheetにてデータソースとしてGoogle Formの送信をトリガーとして、取得したデータを元にAppSheet Automationを利用して、タスクランナーよろしく(IFTTTやZapierのようなもの)、メールを構築して送信するというものが作れるようになりました。
この機能については、Business Starter以上で利用可能になっており、Coreライセンスの範疇で作ることが可能です。
但しまだオープンベータというステータスであるため、今後機能に変更が生じる可能性もあります。現時点での使い道の1つはフォームを送信時をトリガーとして、Google Chatやメールに通知を送信するといったような使い道になります。また、トリガーにしてGASのコマンドも呼び出せるらしいのでこちらはそのうち、記事にしてみたいと思います。
使い所
これまでのGoogle Formは送信時に「送信者に自動応答のメールを送る」というのは標準機能で装備していました。入力した内容をオウム返しで送るだけなので非常にショボい機能です。また、入力内容を例えば作成者ではない別のチームにメール送信するといった内容になるとGoogle Apps Scriptで実装する必要性がありました。
しかし、今回のAppSheetの新機能によって、作成者自身にGASの知識がなくとも、入力された内容を取得して別のチームに整形したメールを送信するといったフローをタスクランナーサービスよろしく、勝手に送信してくれるというものが作成可能になりました。
CoreライセンスをONにした場合
Google WorkspaceのAppSheet Coreプランの場合、簡易なセキュリティ設定がデフォルトで無効になっています。この設定をオンにしていた場合、データベースやアプリの外部公開、外部へのメール送信が出来なくなります。よって、メール送信に於いて、外部に送信する必要性がある場合は無効化しておく必要性があります。
設定は以下の通り
- 管理コンソールにログインする
- 左サイドバーよりアプリ⇒Google Workspace⇒AppSheetを開く
- AppSheet Coreライセンスのセキュリティ設定を開く
- AppSheet Core セキュリティを無効/有効にするにチェックする
- 保存をクリックする
図:オンにすると外部送信不可になる
作成方法
構築手順
Google Formを作る
まずは、送信トリガー元となるフォームを適当に作成します。本当に適当に作ってるだけなので、2個の質問内容だけで、他には何も設定もしていません。作成したら必ず、右上の「公開」からフォームを公開状態にする必要があります。
但し、回答者に関しては公開範囲をよく考えて設定しましょう。その後、上部メニューの「回答者へのリンクをコピー」をクリックし、フォーム入力用の公開ページへのURLを取得しておきます。
図:殆どなにもしていないフォーム
AppSheetでの作成手順
ここからが今回のテーマの本題。早速フォーム送信時をトリガーにしてメールを自動送信のアプリを作ります。目的は自動送信という自動処理部分だけなので、アプリそのもののUIについてはノータッチです。
- AppSheetのメイン画面を開く
- 左上のCreateをクリックし、App⇒Start With existing dataをクリックします。
- アプリの名前をつけて、Categoryは適当にotherを選び、Choose your dataをクリックする
- select data sourceでは、Google Forms Betaを選びます。
- ファイルピッカーの画面になるので、前項で作成したフォームを探して選択します。Selectをクリック。
- アプリが自動的に構築開始されます
- 左サイドバーのAutomationをクリックします
- create my first automationをクリックします。
- Add a new botの画面では、検索窓でformと入れると、「When a new form response is submitted to xxxx」みたいな候補が出てくるのでそれをクリックします。
- タスクの2個目にSend an emailがいるのでクリックします。
- 右サイドバーにSettingsが出てくるので、Email TypeはCustom Templateを選択
- ToのAddボタンをクリックし、入力欄にメアドをダブルコーテーションで括って入力する(例:"kinoko@hogehoge.com")
- Email Subjectは適当に入力。ここがメールタイトルになります。
- Email Bodyが本文。ここに定型の文章を入れたり、Formデータをピックアップしてはめ込むことが可能(この手順は後述)
- Other Email ParameterがCCやBCC、ReplyToなどをセットするオプションになります。
- Attachment Settingは添付ファイルをつける場合ですが今回はとりあえずスルーする
- Settingの横のリンクアイコンをクリックして、「Linking」をオンにする
- メニュー上部のSaveをクリックしてアプリを保存する
- 左サイドバーのトップにあるNot Deployedをクリックする
- Move app to deployed stateボタンをクリックする(これでアプリがデプロイされ有効化します)
これで、フォームを送信すると自動的にセットしたメールアドレス宛てに通知が飛ぶようになります。
図:アプリ作成開始画面
図:ソースの選択でFormを選ぶ
図:ボット作成画面
図:アプリ作成全体図
図:リンクを忘れずにする
図:デプロイして完了
Formデータをピックアップする方法
メール送信時の本文やタイトルに於いて、送信データを利用したい場合には、どうしたらよいか?既に実はアプリ作成時にもうSubjectには入ってるのですが、<<[Timestamp]>> というように、<< >>で括ることで、送信データの値を参照する事が可能です。この場合だとTimestampというフィールドの値を入れるということです。
これは自分が作成したフォーム⇒自動で作成されたデータベースでフィールド名を確認出来るので、その値を元に構築すると良いです。データベースは左サイドバーのDataをクリックするとわかります。NAME列がソレになります。差し込み印刷みたいな感じですね。
図:DBのフィールド名を確認
図:フィールド名を指定して挿入
送信結果
実際に前述までの工程でデプロイした状態で、フォーム作成時に取得した回答者へのリンクのコピーで得たページを開き、フォームを入力して送信してみます。すると
- AppSheetのDatabaseに同じ内容のデータがプールされる
- AppSheet Automationによって、自動的にタスクが実行されて自動応答メールが送信される
という処理が走ります。もちろんアプリそのものにも投稿データが自動で入るようになっています。
図:自動応答で届いたメール
Google Sitesにアプリを貼り付け時の注意点
以前、まだAppSheetのCoreライセンスが割り当てられる前の時代、個人のGoogleアカウントでAppSheetsに貼り付けたアプリについてはGoogle Sitesに貼り付けが出来ました。こちらのサイトにあるようにセキュリティ設定にて、Require user signinをオフにしYes, the data in this app is publicとYes, I am authorized to set up an insecure appをオンにすれば、公開URLを埋め込みで行けました。
しかし、Google WorkspaceにAppSheetのCoreライセンスが自動付与されてコアサービスとなって以降は、貼り付けが出来なくなりました。。Require user signinをオフにしてセーブしても自動的にリセットされます。AppSheet Enterpriseでは細かく設定が可能かもしれませんが、Coreの範疇では変更してもデプロイ出来ないので実質貼り付けが不可能です。
個人アカウントでAppSheetで作ったものならば貼り付けが可能ですが、これを社内で使うわけにはいかない。ということで、AppSheetは確かに無料で使えるのだけれど、Coreの範囲ではSitesに貼り付けが出来ないという制限に引っかかってしまいました。iframe埋め込みのテクニックがあったようなのですが、こちらも利用できなくなっています。
図:埋め込んでもエラーになる
図:埋込時の設定事例
関連リンク
- GoogleフォームとIFTTTを連携してフォーム内容を自動ツイートする
- ログインが必要: 基本情報
- Googleサイトで作るグループウェア(57)ーAppSheetをサイトに埋め込んで動かすー
- AppSheet実践編シリーズ⑫~開発したアプリをサインインなしで使う場合の注意点~
- WARNING_ALLOW_ALL_SIGNINS
- ユーザー向けに AppSheet を有効または無効にする
- <iframe> でアップシートを組み込み
- Error: Workspace AppSheet Core security violation
- AppSheet Core のセキュリティ設定を行う
- Authorize AppSheet to be embedded in Google Site
- AppSheet Core ライセンスがデフォルトで含まれる Google Workspace エディションの拡大と、管理者向けの新しいセキュリティ設定
- ウェブページの iframe でアプリを実行する
- 組織で AppSheet を管理する
- AppSheetユーザー管理が簡単に!「AppSheet Organizations」で効率化を実現