とあるテーブルのデータが更新された時、関連する別のテーブルのデータも更新する方法を見つけましたので記録しておきます。
AutomationのCall a processを利用する方法になりますが、正しい方法なのか(主流な方法なのか)はわかりません・・・。
この記事で紹介するサンプル
今回は、備品の貸出管理を行うアプリを例として説明します。
テーブルは以下の2つです。
貸出簿テーブル | 備品の貸出履歴を記録する |
備品テーブル | 全備品の一覧テーブル |
発生するイベントは、備品の貸し出し、備品の返却です。
データの動きは下図のとおりとします。

備品の貸出、返却時は、貸出簿テーブルに記録すると共に、備品テーブルの「備品状態」も更新します。
Events(処理が起動する条件)を作成する
今回の例は、貸出簿テーブルのデータが追加・更新されたら、備品テーブルの「備品状態」を更新するという処理になります。
まずは、貸出簿テーブルのデータが追加・更新されたらの部分(Events)を作成します。

備品テーブルに紐づくプロセスを作成する
続いて、備品テーブルの「備品状態」を更新する の部分(Process)を作っていきます。
AppSheetのAutomationのProcessは、1つのProcessにつき、1つのテーブルだけを紐づけできるようです。
- ①備品のデータを更新するプロセス
- ②貸出簿のデータを元に、①を呼び出すプロセス
今回は、上記の2つのプロセスが必要になります。
まずは、①備品のデータを更新するプロセス を作成します。


貸出簿テーブルに紐づくプロセスを作成する
続いて、②貸出簿のデータを元に、①(備品更新プロセス)を呼び出すプロセス を作成します。





*Process inputsの設定値
備品番号:
[備品番号]
備品状態:
IF([貸出状態] = "貸出中", "利用不可", "利用可")
ボットを作成する
ここまでの作業で、起動条件(Events)と、処理(Process)が作成できました。
あとは、それを組み合わせたボットを作成すればOKです。


おわりに
以上で作成は完了です。
この記事の重要なポイントは、「備品更新プロセス呼び出し」の部分になるかと思います。

Add or lookup process input?をLookupにした場合、Process inputsには、呼び出し先プロセス(備品更新プロセス)が紐づいているテーブル(備品テーブル)のキー項目(備品番号)を必ず指定する必要があります。
キー項目以外の項目(備品状態)も指定した場合・・・
①対象テーブル(備品テーブル)から
②キー項目(備品番号)でデータを検索し
③キー以外の項目(備品状態)を更新する
という動きになるようです。
コメント
今のappsheetでイベントまでは設定できるのですが、それ以降のプロセスを追加などのやり方がサイトの物と違いできないです。どうすれば良いでしょうか?