更新前後の列の値にアクセスする

データ変更のコンテキスト内では、レコードが更新されたとき、更新の前後の両方で各列の値にアクセスできます。

Before と After の値について

Before と After の値は以下に示すように使用します。

Before の値

Before の値は、レコードが更新される直前にキャプチャされます。更新が適用される直前に、ワークシートやデータベースのレコードから取得されたフィールドの値が含まれています。

Before の値には、すべての仮想列の値が含まれています。仮想列の値は、Before の値が取得されるときに再計算されます。これによって、仮想列の値が最新のフィールドの値を反映していることが保証されます。

Before の値は、更新が行われたときにクライアント デバイスに存在していたのと同じレコードの値ではあり得ません。クライアント デバイスが 2 つ以上あるなら、次の状況が発生することがあります。
  1. クライアント デバイス 1 がレコードを読み取ります。
  2. クライアント デバイス 2 が同じレコードを読み取ります。
  3. クライアント デバイス 2 がレコードのコピーを更新し、更新をサーバーと同期します。
  4. クライアント デバイス 1 がレコードのコピーを更新し、更新をサーバーと同期します。

この場合、クライアント デバイス 1 によって同期される更新の Before の値には、クライアント デバイス 2 によって行われた変更が含まれることになります。この動作が問題になることは稀ですが、発生する可能性があることを認識しておいてください。

After の値

After の値は、レコードが更新された直後にキャプチャされます。ワークシートやデータベースのレコードから、更新が適用された直後に取得されたフィールドの値が含まれています。

After の値には、すべての仮想列の値が含まれています。仮想列の値は、After の値が取得されるときに再計算されます。これによって、仮想列の値に最新のフィールドの値を確実に反映できます。

After の値には、Google スプレッドシート、Excel、SmartSheet のワークシートの数式によって計算された、すべてのフィールドの値も含まれています。これにより、これらのワークシートの数式によって計算されたフィールドの値を表示または参照できます。これをサポートするため、Google スプレッドシート、Excel、または SmartSheet のプロバイダがワークシートの数式を再計算した後で、Added または Updated の行が再度読み取られます。

自動化で使用されるとき、ボットが Data Change Actions を起動すると、それらの Data Change Actions の影響は After の値に反映されません。After の値は、ボットをトリガーした追加または更新によって行われた変更のみを反映します。ただし、すべての Data Change Actions の影響は、現在のフィールドの値に反映されます。まとめると、次のとおりです。
  1. Before と After の値を比較すると、ボットをトリガーした更新によって加えられた変更を確認できます。

  2. 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])

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。
検索
検索をクリア
検索を終了
Google アプリ
メインメニュー
9114043263292922824
true
ヘルプセンターを検索
false
true
true
true
false
false
false
false