メディア掲載: レバテックフリーランス様のサイトで当ブログが紹介されました

【AppSheet】Automationを使って別のテーブルを更新する(Call a process)

とあるテーブルのデータが更新された時、関連する別のテーブルのデータも更新する方法を見つけましたので記録しておきます。

AutomationCall a processを利用する方法になりますが、正しい方法なのか(主流な方法なのか)はわかりません・・・。

この記事で紹介するサンプル

今回は、備品の貸出管理を行うアプリを例として説明します。

テーブルは以下の2つです。

貸出簿テーブル備品の貸出履歴を記録する
備品テーブル全備品の一覧テーブル

発生するイベントは、備品の貸し出し、備品の返却です。
データの動きは下図のとおりとします。

今回のサンプルアプリのイベントとデータの動き

備品の貸出、返却時は、貸出簿テーブルに記録すると共に、備品テーブルの「備品状態」も更新します。

Events(処理が起動する条件)を作成する

今回の例は、貸出簿テーブルのデータが追加・更新されたら、備品テーブルの「備品状態」を更新するという処理になります。

まずは、貸出簿テーブルのデータが追加・更新されたらの部分(Events)を作成します。

Automation → Events → New Eventで、処理の起動条件となるイベントを定義する
Automation → Events → New Eventで、処理の起動条件となるイベントを定義する

備品テーブルに紐づくプロセスを作成する

続いて、備品テーブルの「備品状態」を更新する の部分(Process)を作っていきます。

AppSheetのAutomationProcessは、1つのProcessにつき、1つのテーブルだけを紐づけできるようです。

  • 備品のデータを更新するプロセス
  • 貸出簿のデータを元に、①を呼び出すプロセス

今回は、上記の2つのプロセスが必要になります。

まずは、①備品のデータを更新するプロセス を作成します。

Automation → Processes → New Process
Automation → Processes → New Process
プロセス名を設定し、Tableには「備品」テーブルを選択する
プロセス名を設定し、Tableには「備品」テーブルを選択する

貸出簿テーブルに紐づくプロセスを作成する

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

Automation → Processes → New Process
Automation → Processes → New Process
プロセス名を設定し、Tableには「貸出簿」を選択する。その後、Add a stepをクリック。
プロセス名を設定し、Tableには「貸出簿」を選択する。その後、Add a stepをクリック。
Create a custom stepをクリック
Create a custom stepをクリック
Stepの名前や処理内容を設定する
Stepの名前や処理内容を設定する
Addボタンを押し、Process inputsを設定する(数式は後述)
Addボタンを押し、Process inputsを設定する(数式は後述)

*Process inputsの設定値

備品番号:

[備品番号]

備品状態:

IF([貸出状態] = "貸出中", "利用不可", "利用可")

ボットを作成する

ここまでの作業で、起動条件(Events)と、処理(Process)が作成できました。

あとは、それを組み合わせたボットを作成すればOKです。

Automation → Bots → New Bot
Automation → Bots → New Bot
ボットの名前を付け、イベントとプロセスは先ほど作ったものを選択
ボットの名前を付け、イベントとプロセスは先ほど作ったものを選択

おわりに

以上で作成は完了です。

この記事の重要なポイントは、「備品更新プロセス呼び出し」の部分になるかと思います。

先ほどの画像を再掲

Add or lookup process input?Lookupにした場合、Process inputsには、呼び出し先プロセス(備品更新プロセス)が紐づいているテーブル(備品テーブル)のキー項目(備品番号)を必ず指定する必要があります。

キー項目以外の項目(備品状態)も指定した場合・・・

①対象テーブル(備品テーブル)から
②キー項目(備品番号)でデータを検索し
③キー以外の項目(備品状態)を更新する

という動きになるようです。


コメント

タイトルとURLをコピーしました