List型を活用して柔軟な通知制御を実現する方法(例付き解説)

データ型
AppSheetDataTipsデータ型

AppSheetで通知(Email・Push通知・チャット通知)を送る際、通知先や通知条件を柔軟にコントロールしたい場面は多いと思います。

この記事では、「List型の列を使った通知制御の実装例」を通じて、次のような課題を解決する方法をご紹介します


想定するユースケース

タスク完了時に、関係者(複数名)へ通知を送りたい。
ただし、通知先はタスクごとに変わる可能性があるため、固定ではなくリストで制御したい。


例題アプリの構成

テーブル:Tasks(タスク管理)

  • タスク名
  • 担当者(Text)
  • 通知先リスト(EnumList of Email)
  • ステータス(Text)
  • 通知条件:ステータスが「完了」になったら 通知先リスト に通知

手順1:通知先をList型で管理する

通知先リスト 列を EnumList 型に設定

  • Base Type: Email
  • Allow other values: ✅ ON
  • Suggested values: Users[メールアドレス] など

これで、ユーザーは複数の通知先をフォームで自由に設定できます。


手順2:Botで通知を送信

  1. Automation > Bots > 新規作成
  2. Trigger: When a record is updated
    • テーブル: Tasks
    • 条件: [ステータス] = "完了"
  3. Processで「Send an Email」を追加
  4. To欄に以下を入力
[通知先リスト]

⚠️ EnumList をそのまま使っても、自動的にカンマ区切りの文字列になるため、複数宛先として問題なく動作します。


実例1:ログインユーザーが通知対象に含まれているかチェック

通知前に、ログインユーザーが含まれている場合のみメッセージを表示したいとき

IN(USEREMAIL(), [通知先リスト])

これをShow_IfVisible_If条件に使えば、自分が通知対象かどうかを条件にした表示制御が可能になります。


実例2:部署ごとに通知先を自動追加

通知先リスト を以下のように計算式で初期化することで、デフォルト通知先を自動設定できます

IF([部署] = "開発部", LIST("dev_lead@example.com", "qa@example.com"),
IF([部署] = "営業部", LIST("sales_lead@example.com"), LIST())
)

応用:通知先をユーザーの役割によって拡張する

UNIQUE(
[通知先リスト] +
SELECT(ユーザー[メールアドレス], [役割] = "マネージャー")
)

※重複しないように全体リストをUNIQUEにします。

✅ これにより、個別設定された通知先に加えて、マネージャー全員にも通知が届くようになります。


Tips

内容式・機能
通知先に自分が含まれているかIN(USEREMAIL(), [通知先リスト])
通知対象に一括で部署を指定SELECT(ユーザー[メールアドレス], [部署] = "営業部")
重複通知を避けるUNIQUE() を使う
条件付き通知Botの「Condition」や IF 文で切り替え

まとめ

要素ポイント
EnumList列通知先の複数指定に最適(メールでもPushでも)
Bot通知制御のハブ。List型も扱える
式活用IN()SELECT()UNIQUE()などで柔軟な対象制御

おわりに

通知処理はアプリの運用において重要な要素です。
List型を上手く使えば、柔軟でミスのない通知制御を簡単に構築できます。

ぜひこの機会に、EnumList + Bot + List演算 の組み合わせをマスターしてみてください!