AppSheet と Gmail が統合 – dynamic email でできること

folder_openAppSheet

2021年10月12日(米国太平洋標準時)から開催された「Google Cloud Next '21」において、AppSheetとGmailの統合、および新機能であるdynamic emailについて発表されました。
この記事では、実際にdynamic emailを作ってみた経験を踏まえて、想定される使用例、できること、できないこと(ただし、執筆時点で)」をまとめました。

【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。

Switch to the legacy editor」で旧エディタに切り替える。

1. dynamic emailの概要と設定方法

Gmail上で AppSheetアプリを操作できる

dynamic emailとは、AppSheetからAutomationで送信したメールをGmailで開くと、メール画面にAppSheetアプリのViewが表示され、メール上でアプリを操作できるというものです。

dynamic emailは、AppSheetからAutomationで送信したメールをGmailで開くと、メール画面にAppSheetアプリのViewが表示され、メール上でアプリを操作できる。

メール画面に表示されたアプリ上で操作(ボタンクリックやテキスト入力)すれば、スプレッドシートなどのデータソースに反映されます。Botを使って、さらに追加のワークフローをトリガーすることもできます。

AppSheet Automationから送信設定をする

dynamic emailの設定は、AutomationでBotを作成するところから始まります。
Automationの使い方については、こちらの記事で解説しているので、はじめての方は参考にしてください。
エディタ画面の左側メニュー「Automation」から、Bot → Event → Process → Taskの順に作成し、設定します。

AppSheetエディタ左側メニュー「Automation」から、Bot → Event → Process → Taskの順に設定する。

Taskを設定する時に、Task categoryで「Send an email」をクリックして選択すると、メール送信設定ができます。
ここで「Use Dynamic Email」からメール送信に使うViewを選択します。

「Use Dynamic Email」からメール送信に使うViewを選択する。

親切なことに、AppSheetは選択したViewがdynamic emailに対応しているか判定してくれます。
対応していないViewを選択すると、以下のようなアラートが表示されます。

対応していないViewを選択するとAppSheetがアラートを表示する。

対応しているViewを選択すると、「preview」リンクが現れるので、メールにどのような感じで表示されるか事前に確認ができます。

対応しているViewを選択すると、AppSheetでプレビューができる。

2. AppSheetからdynamic emailを送信してみる

dynamic emailを実際に作ってみた経験から、想定される使用例について紹介します。
あくまで執筆時点での想定例なので、今後のアップデートにより使用例は増えるのではないかと思います。

AppSheetから依頼メールを送信する

タスク管理アプリでタスクを新規作成し、メンバーをアサインする時に、dynamic emailでメンバーにタスクを依頼する使用例です。
メンバーはGmailでメールを開きステータス、この例では「未着手」をクリックします。
これだけで、承諾したことがスプレッドシートに記録され、「了解しました」だけのためにメール返信する手間も省けます。

AppSheetからdynamic emailでタスク依頼メールを送信する。

承認メールでボタンをクリックする

電子契約アプリで、契約書のドラフトについて法務担当者に承認を依頼する使用例です。
ここでは、BehaviorでActionを作成して、「法務担当承認」ボタンをクリックしてdynamic emailを送信しています。
法務担当者はGmailでメールを開き、リンクから契約書を確認し、「承認」ボタンをクリックするだけです。

AppSheetからdynamic email で契約書の承認メールを送信する。

メール添付で書類をやりとりしていると、どのバージョンが最新版かが分からなくなることがあります。
この使用例では、Googleドライブ上に保存している最新バージョンを常に参照できるため、その心配がなくなります。
また、「承認します」だけのためにメール返信する手間も省けます。

AppSheetから写真つきの報告メールを送信する

設備保全アプリで、保全作業が完了した時に、現場作業員から設備管理者に完了報告する使用例です。
不具合箇所の写真を撮り、作業内容とともにdynamic emailで報告しています。
管理者はGmailでメールを開き、「確認」ボタンをクリックします。

AppSheetからdynamic email で作業完了報告メールを送信する。

例えば、外回りで保全作業を行っている場合、いちいち会社に戻らなくても完了報告と作業日報がdynamic emailだけでできるようになります。現場からの写真つき報告メールは有用なので、多くの使い道があると思います。

3. できないこと(執筆時点で)

dynamic emailには機能制限がある

dynamic emailには機能制限があります。
主な制限についてピックアップしました。他にもあるので、詳細はこちらを参照してください。

機能制限 備考
ドメイン
  • AppSheetアカウントにログインしているドメイン内の受信者にのみ送信できます。
  • @gmail.com、@hotmail.comのようなパブリックドメインでは使用できません。
メール受信者 アプリへのアクセスが許可されており、ユーザーライセンスにカウントされます。
View

Detail viewとForm viewが使えます。
Detail viewでは、Main image、Header columns、Quick edit columns、Column orderの設定ができます。
Form viewでは、Column orderの設定ができます。

列タイプ

以下の列タイプ(Column type)の編集はできません。

  • ChangeCounter
  • ChangeLocation
  • ChangeTimestamp
  • Color
  • Drawing
  • File
  • Image
  • Price
  • Progress
  • Signature
Action

次の2つのActionが使用できます。

  • Data: set the values of some columns in this row
  • Data: add a new row to another table using values from this row

機能制限
以上の機能制限は、あくまで記事の執筆時点ということに留意してください。
というのも、AppSheetの改修スピードが早く、更新されるためです。

例えば、ドメイン内のみ送信できる制限を「なくすことはロードマップにある」とのことなので、将来的に制限がなくなると思われます。更新があった場合は、AppSheet Creator Communityにて随時アナウンスされます。

作ってみて気づいたこと

保存に時間がかかる

Gmailでメール画面を開き、何かひとつ操作すると「Saving...」と表示されます。
この表示が「Last saved just now」に変わるまで次の操作をしてもスプレッドシートに反映されません。

dynamic email は保存に時間がかかる。

例えば、Enum Listの場合、checkboxをポンポンッとチェックしていくような軽快な動作は難しいです。
dynamic emailでは、受信者に一度でたくさんの操作をさせないように絞り込んで設計した方がよいでしょう。

時間がずれる

BotとActionを使って列の値を更新したいと考えることは多いと思います。
例えば、ステータスを変更(作業中 → 完了など)した時に、DateTime列に変更日時をNow関数で記録するような使い方です。

時間系の列タイプ(DateTime)は注意が必要で、dynamic emailからActionを使って更新するとGMT時間で記録されてしまいます。
JST(日本標準時)とは9時間の時差が生じるので、使用する際には注意が必要です。

dynamic emailから時刻を保存すると、GMT時間で保存される。

Enum List が配列で返ってくる

Enum Listで複数選択できるようにすると、dynamic emailからは配列で値が返ってきます。
Enum Listで値を区切る「Item separator」は、何も設定していない場合は "," になると思います。
配列だとデータ区切りが判定できないので、ひとかたまりのデータと見なされてしまうようです。

Enum Listは配列になる。

SUBSTITUTE関数で、大括弧とダブルクォートを削除して無理矢理Enum Listにすることができるかもしれませんが、今のところ妙案が思い浮かびません。Enum Listを使う時は注意が必要です。

写真を表示する時の設定

写真(Drawing、Image)を表示したい時、Detail viewでは「Use Card Layout」が使用できません。
なので、Detail viewを使って写真を表示するときには、View Optionsの「Main image」で写真の列を選択します。

写真はAppSheetのViewで「Main Image」で設定する。

例えば、Card Layoutで住所(Address)からマップを表示して、dynamic emailでマップを送信するという使い方はできません(実際に試してみましたが、できませんでした)。
これができれば、現場作業員に作業指示する時に場所をマップで指示できるのですが(できない)。さらに、アイコンクリック => Googleマップ表示でナビゲーションまでできれば最高なのですが、執筆時点ではそのような使い方はできません。

Detail view の Card Layout は使えない。

4. まとめ - AppSheetのアップデート情報を常にチェックしよう

dynamic emailについて概要と設定方法、具体的な使用例をまとめました。
設定は簡単、使用例としては「依頼」「承認」「報告」などが想定されます。
AppSheetの今後のアップデート次第では、利用シーンが増えていくのではないかと思います。

できないことは【執筆時点で】なので、こちらも今後のアップデートで機能制限が緩和されたり、改修されていくと思います。
例えば、Dateタイプ列は当初、日本語環境非対応だったのですが、わずか数日で対応されて使えるようになりました。
他にも、非対応だったRefタイプが使えるようになっています。

AppSheetの改修スピードは非常に早いので、更新情報を常にチェックしておきましょう。
記事内に誤り、機能制限に関するアップデート情報がありましたら、是非コメントください。

Share Me!

前の投稿
AppSheet で請求書アプリ(第7回)Automationで請求書をPDFで発行
次の投稿
AppSheet で在庫管理アプリ(第7回)CSVでデータをエクスポートする

関連記事

メニュー