これまでの連載で、AppSheetのテーブル設計、Viewの作成、そしてシステムの振る舞いを設計するためのUML図作成と、アプリ開発の基礎を網羅してきました。しかし、真に価値のある業務アプリとは、単にデータを記録するだけでなく、「手作業を減らし、業務を自動化してくれる」ものです。連載第5回で作成したシーケンス図を思い出してください。ユーザーの「出庫」操作の裏側では、「入出庫履歴への書き込み」と「在庫マスタの更新」という2つの処理が連動して動く必要がありました。この連動をAppSheetで実現するのが、今回学ぶ「Action」と「Automation」です。この連載最終回では、在庫管理アプリを題材に、ボタン一つで複数の処理を実行するActionと、データの変更をトリガーにバックグラウンドで自動処理を行うAutomationを実装します。この記事を読み終える頃には、あなたはAppSheetの全工程を理解し、業務の自動化を設計・実装できる、真のAppSheet実務者となっているでしょう。
[目次を開く]
本記事でできるようになること
- AppSheetのActionとAutomationの基本的な概念と役割を理解します。
- Actionを組み合わせて、ボタン一つで複数のデータ操作を連動させる複合Actionを実装できます。
- データの変更をトリガーに、メール通知などのバックグラウンド処理を自動で行うAutomation(Bot)を作成できます。
- 連載第5回で設計したシーケンス図を、ActionとAutomationという具体的な機能に落とし込むスキルを習得します。
- AppSheetの全工程(設計から自動化まで)を理解し、業務効率を最大化するアプリを開発できるようになります。
第1章:Actionの基本と種類
Actionとは?:ユーザー操作をトリガーにする
Actionは、ユーザーがアプリ上でボタンをタップしたり、スワイプしたりといった操作を行った際に実行される、一連の処理を定義する機能です。AppSheetアプリの「心臓部」とも言え、ユーザーの意図をシステムに伝える役割を果たします。Actionは、特定のテーブルに対して定義され、そのテーブルのレコードに対して実行されます。
データ操作系Action(Add, Delete, Set the values of some columns)
最も基本的なActionは、データの追加、削除、更新といったCRUD操作に関連するものです。
| Actionの種類 | 概要 | AppSheetでの設定 |
| Add a new row to another table | 別のテーブルに新しいレコードを追加する。 | Target Tableと、追加する列の値を指定。 |
| Delete | 現在のレコードを削除する。 | 警告メッセージなどを設定可能。 |
| Set the values of some columns | 現在のレコードの特定の列の値を変更する。 | 変更したい列と、新しい値を指定する式を設定。 |
実体験: 私は当初、在庫数を更新する際に、Form Viewで直接ITEMSテーブルの数量列を編集させていました。しかし、これでは「いつ、誰が、どれだけ」変更したかの履歴が残りません。そこで、HISTORYテーブルにレコードを追加するActionと、ITEMSテーブルの数量を更新するActionを組み合わせる必要性に気づきました。これが複合Actionの導入のきっかけです。
第2章:複合Actionで出庫処理を自動化する
連載第5回で設計したシーケンス図の「出庫処理」は、Actionの連動によって実現されます。
シーケンス図をActionに落とし込む
シーケンス図のステップをActionに分解すると、以下のようになります。
- ユーザーがAppSheetアプリに「物品の出庫」を要求 → Actionの実行
- AppSheetアプリはユーザーに「出庫フォーム」を表示 → Form Viewの表示
- ユーザーは出庫情報を入力し、「保存」をタップ → 複合Actionのトリガー
- AppSheetアプリは、まず入出庫履歴 (HISTORY)テーブルに「出庫レコード」を追加するよう要求 → Action A: HISTORYテーブルへの追加
- 次に、AppSheetアプリは在庫マスタ (ITEMS)テーブルの該当する物品の「在庫数量」を更新(減算)するよう要求 → Action B: ITEMSテーブルの更新
最終的に、Action AとAction Bを順番に実行する複合Actionを作成します。
実演:出庫Actionで履歴追加と在庫更新を同時に行う
複合Actionは、複数のActionを一つのボタンにまとめる機能です。手順1: 個別Actionの作成
- Action A:
Add_History_Out
・Do this:Add a new row to another table
・Target Table:HISTORY
・Set these columns:操作種別を"出庫"、数量変更を-[出庫数量](出庫フォームで入力された値)に設定。 - Action B:
Update_Item_Quantity
・Do this:Execute an Action on a set of rows
・Referenced Table:ITEMS
・Referenced Rows:SELECT(ITEMS[ItemID], [ItemID] = [_THISROW].[物品ID])(出庫対象の物品レコードを特定)
・Referenced Action:Set the values of some columns(ITEMSテーブルに定義した在庫更新用のAction)
手順2: 複合Actionの作成
- Action C:
Do_Outbound_Process
・Do this:Grouped: execute a sequence of actions
・Actions:Action A、Action Bの順に設定。
実体験: 複合Actionの順番を間違えると、在庫更新が先に行われてしまい、履歴に残す前の在庫数がわからなくなるというミスを犯しました。「ログ(履歴)を先に残し、マスタ(在庫数)を後で更新する」という原則を徹底することが、データの整合性を保つ鍵です。
第3章:Automationでバックグラウンド処理を自動化する
Actionがユーザーの操作をトリガーとするのに対し、Automationはデータの変更やスケジュールをトリガーに、バックグラウンドで自動的に処理を実行します。
Automationとは?:イベント駆動型の自動処理
Automationは、以下の3つの要素で構成されます。
- Event (イベント): 自動処理を開始するきっかけ。データの追加・更新・削除や、特定の時刻などが設定できます。
- Process (プロセス): イベントが発生した際に実行される一連の処理。
- Task (タスク): プロセスを構成する個々の処理。メール送信、データ変更、外部システム連携などがあります。
実演:在庫が一定数を下回ったら管理者にメール通知
手順1: Eventの作成
-
Event Type:Data Change -
Table:ITEMS -
Change Type:Updates only(在庫数が更新された時のみ) -
Condition:[数量] < 10(在庫数が10を下回った場合)
手順2: Taskの作成
-
Task Type:Send an email -
To: 管理者のメールアドレス(例:"admin@example.com") -
Email Body:"【在庫アラート】[物品名]の在庫が[数量]個を下回りました。"
手順3: ProcessとBotの作成
-
ProcessにTaskを設定し、EventとProcessを紐づけてBotを完成させます。
このBotを設定することで、ユーザーがActionで出庫処理を行った結果、ITEMSテーブルの数量が10を下回った瞬間に、自動で管理者にメールが届くようになります。ユーザーは意識することなく、システムが裏側で業務をサポートしてくれるのです。
第4章:ActionとAutomationの連携と応用
ActionとAutomationを組み合わせることで、より高度な自動化を実現できます。
ActionからBotを呼び出す方法
Actionには、Call a process in a botという種類があり、ユーザー操作をトリガーにAutomationを直接実行させることができます。応用例: 物品の登録時に、ActionでITEMSテーブルにレコードを追加した後、Call a process in a botでBotを呼び出し、そのBotで「物品の写真を自動でリサイズしてS3にアップロードする」といった外部連携処理を実行させる、といった使い方が可能です。
応用:定期的な在庫棚卸しリマインダーの自動化
Event TypeをScheduledに設定することで、特定の時間にBotを定期実行させることができます。
- Event: 毎週金曜日の午前9時
- Task: 全ユーザーに「今週の棚卸しを完了してください」というリマインダーメールを送信
このように、ActionとAutomationは、AppSheetアプリを単なるデータ管理ツールから、業務プロセス全体を自動化する強力なプラットフォームへと進化させます。
AppSheet用語表
| 用語 | 意味 | AppSheetでの設定場所 | 応用例 |
| Action | ユーザー操作をトリガーに実行される処理。 | Behavior > Actions | ボタンタップで別画面に遷移、データ更新。 |
| Automation | データ変更やスケジュールをトリガーに実行されるバックグラウンド処理。 | Automation > Bots | 在庫アラートメール送信、定期レポート生成。 |
| Grouped Action | 複数のActionを順番に実行する複合Action。 | Action TypeでGrouped: execute a sequence of actionsを選択。 | 出庫処理(履歴追加と在庫更新)。 |
| Event | Automationの実行トリガー。 | Automation > Bots > Event | Data ChangeやScheduled。 |
| Task | Automationのプロセスを構成する個々の処理。 | Automation > Bots> Process > Task | Send an email、Run a Data Action。 |
FAQ
Q: ActionとAutomation、どちらを使うべきか迷います。
A: ユーザーの操作(ボタンタップなど)に連動して即座に実行したい処理はAction、データの変更や時刻をトリガーにバックグラウンドで実行したい処理はAutomationと使い分けるのが基本です。
Q: 複合Actionで実行できるActionの数に制限はありますか?
A: 公式な制限はありませんが、あまりに多くのActionを連ねると処理時間が長くなり、ユーザー体験を損なう可能性があります。複雑な処理は、ActionからAutomationを呼び出すなど、バックグラウンド処理に切り分けることを検討してください。
Q: Automationでメールを送信する際、HTMLメールは使えますか?
A: はい、TaskのSend an email設定で、メール本文をHTML形式で記述できます。これにより、よりリッチなデザインの通知メールを作成することが可能です。
Q: AutomationのBotは、AppSheetアプリが閉じている状態でも動きますか?
A: はい、AutomationはAppSheetのクラウドサーバー側で実行されるため、ユーザーがアプリを閉じている状態や、オフラインの状態でも、トリガーとなるイベントが発生すれば自動的に処理が実行されます。
Q: ActionでGo to another Viewを実行する際、条件によって遷移先を変えられますか?
A: はい、Go to another View ActionのTarget設定で、LINKTOVIEW()などの式を使い、IF()やSWITCH()関数で条件分岐させることで、動的に遷移先を変更できます。
まとめ/CTA
これにて、AppSheetによる業務アプリ開発の全工程を網羅した連載は完結です。第1回でテーブル設計の基礎を学び、第2回でテーブル間の連携(Ref)をマスターし、第3回でデータベース設計の思考法を身につけ、第4回でViewによるUI/UXを整え、第5回でUML図による処理の俯瞰を実践し、そして今回、ActionとAutomationによる業務の自動化という「仕上げ」を学びました。あなたは今、単なる「AppSheetの操作者」ではなく、「業務の課題をAppSheetで解決できる初級ITエンジニア」へと進化しました。この連載で得た知識は、あなたの業務を劇的に効率化するだけでなく、ノーコード開発者としての市場価値を高める強力な武器となるでしょう。
次のステップ:
- 実践: この連載で学んだ知識を活かし、あなたの職場の小さな課題からAppSheetアプリを開発してみましょう。
- 応用: ActionやAutomationの式をさらに深く学び、より複雑な業務ロジックを実装してみてください。
- 共有: あなたの成功体験をチームやコミュニティで共有し、AppSheetの輪を広げてください。
あなたのAppSheet開発の旅は、ここからが本番です。Good Luck!
関連記事
📄【第1回】AppSheetで在庫表から最短テーブル作成!初級エンジニア向け入門ガイド
📄【第2回】AppSheetのRefで親子連携!在庫管理アプリで学ぶテーブル連携の基本
📄【第3回】データベース設計入門:在庫管理アプリの要件定義からER図まで
📄【第4回】AppSheet View入門:基本の使い方と主要6タイプを徹底解説!
📄【第5回】AppSheet開発を変える!ユースケース図とシーケンス図で処理を俯瞰する
📄【第6回】ActionとAutomationで業務を徹底的に自動化する

