データ変更のコンテキスト内では、レコードが更新されたとき、更新の前後の両方で各列の値にアクセスできます。
Before と After の値について
Before と After の値は以下に示すように使用します。
- Before と After の値を自動化で使用する
- 列の Before の値を表示する
- 列の After の値を表示する
- 列の Before と After の値を表示する
- 列の Before と After の値を比較する
- 特定の Before または After の値をチェックする
Before の値
Before の値は、レコードが更新される直前にキャプチャされます。更新が適用される直前に、ワークシートやデータベースのレコードから取得されたフィールドの値が含まれています。
Before の値には、すべての仮想列の値が含まれています。仮想列の値は、Before の値が取得されるときに再計算されます。これによって、仮想列の値が最新のフィールドの値を反映していることが保証されます。
- クライアント デバイス 1 がレコードを読み取ります。
- クライアント デバイス 2 が同じレコードを読み取ります。
- クライアント デバイス 2 がレコードのコピーを更新し、更新をサーバーと同期します。
- クライアント デバイス 1 がレコードのコピーを更新し、更新をサーバーと同期します。
この場合、クライアント デバイス 1 によって同期される更新の Before の値には、クライアント デバイス 2 によって行われた変更が含まれることになります。この動作が問題になることは稀ですが、発生する可能性があることを認識しておいてください。
After の値
After の値は、レコードが更新された直後にキャプチャされます。ワークシートやデータベースのレコードから、更新が適用された直後に取得されたフィールドの値が含まれています。
After の値には、すべての仮想列の値が含まれています。仮想列の値は、After の値が取得されるときに再計算されます。これによって、仮想列の値に最新のフィールドの値を確実に反映できます。
After の値には、Google スプレッドシート、Excel、SmartSheet のワークシートの数式によって計算された、すべてのフィールドの値も含まれています。これにより、これらのワークシートの数式によって計算されたフィールドの値を表示または参照できます。これをサポートするため、Google スプレッドシート、Excel、または SmartSheet のプロバイダがワークシートの数式を再計算した後で、Added または Updated の行が再度読み取られます。
-
Before と After の値を比較すると、ボットをトリガーした更新によって加えられた変更を確認できます。
-
Before と現在の
[FieldName]の値を比較すると、ボットをトリガーした更新と、それ以後の Data Change Actions すべての両方を含む、すべての変更を確認できます。
Before と After の値を自動化で使用する
Before と After の値は、次のように自動化で使用できます。
- Body テンプレートと Attachment テンプレートで、Before と After の値を表示できます。
- Body、Subject、PreHeader、From Display、Attachment Name プロパティの Before と After の値を表示できます。
- Body テンプレート、Attachment テンプレートの
<<If>>式で Before と After の値を使用できます。これにより、Before と After の値に応じて、テンプレートの一部を条件付きで含める、または除外することができます。 - Before と After の値を IF THIS IS TRUE 式で使用し、ボットがトリガーされるかどうかを制御できます。これは、フィールドの値が変更された、または特定の値に変更されたときボットをトリガーするために多く使用されます。
制限事項
ボットは、自分をトリガーしたレコードの Before と After の値のみを見ることができます。更新されたレコードの子レコードの Before と After の値を見ることはできません。
この制限は、AppSheet が各レコードを独立に更新することに起因します。たとえば、親レコードとその子レコードの 1 つを更新すると、AppSheet は 2 つの独立した更新を行います。更新の 1 つは親レコードに影響します。2 つ目の独立した更新は子レコードに影響します。ボットは親レコードが更新されたときに起動しますが、子レコードの更新の Before や After の値を見ることはできません。
子レコードのボットを定義すると、そのボットは自分をトリガーした子レコードの Before と After の値を見ることができます。しかし、その親レコードの Before と After の値を見ることはできません。
列の Before の値を表示する
レコードが更新されるとき、列の Before の値を表示できます。たとえば、テンプレートの Priority 列について Before の値を表示すると次のようになります。
The old value of the Priority columns was <<[_THISROW_BEFORE].[Priority]>>
列の After の値を表示する
レコードが更新されるとき、列の After の値を表示できます。たとえば、テンプレートの Priority 列について After の値を表示すると次のようになります。
The new value of Priority is <<[_THISROW_AFTER].[Priority]>>
列の Before と After の値を表示する
列の Before と After の両方の値を表示し、列の値がどのように変化したかを示すことができます。たとえば、テンプレートに次のメッセージを含めることができます。
The old Priority value was <<[_THISROW_BEFORE].[Priority]>> and the new Priority value is << [_THISROW_AFTER].[Priority]>>
列の Before と After の値を比較する
列の Before と After の値を比較し、列の値が変化したかどうかを判定できます。たとえば、次の Condition プロパティを指定し、Priority 列の Before と After の値が変化したときデータ変更をトリガーできます。
[_THISROW_BEFORE].[Priority] <> [_THISROW_AFTER].[Priority]
特定の Before または After の値をチェックする
特定の Before または After の値をチェックできます。たとえば、次の Condition プロパティを指定し、Priority 列の After の値が High であるときにデータ変更をトリガーできます。
AND([_THISROW_AFTER].[Priority] = "High", [_THISROW_BEFORE].[Priority] <> [_THISROW_AFTER].[Priority])