前提条件
Salesforceのトリガーフローにて、行動オブジェクトのStartDateTime(開始)
とEndDateTime(終了)
をフローエントリ条件式で使用するとエラーが発生します。
エラー例
以下の条件式を使用した場合:
BEGINS({!$Record.WhatId}, "001") && isChanged({!$Record.StartDateTime}) || isNew()
エラーメッセージ:項目StartDateTimeは存在しません。スペルを確認してください。
EndDateTime
を使用した場合も同様のエラーが発生します。
サポートの回答
サポートへの問い合わせ結果:
・既知の問題(Known Issue)として認識されています。
・Issue : Event Fields StartDateTime and EndDateTime throw error in Flow entry criteria formula
・現在のステータス:「Working as Expected」
・解決予定:現時点では未定
回避方法
StartDateTimeとEndDateTimeを条件としてフローの動作を制御する方法としては以下2つとなります。
・エントリ条件に数式を使用せず、項目ごとにフィルターを設定する
・対象の項目を含む数式を設定した「Boolean」型をの数式リソースを [決定] 要素に配置
エントリ条件に数式を使用せず、項目ごとにフィルターを設定する
この方法でも回避自体は可能です。
しかし、このエントリ条件では、レコードが作成された際にフローが動きません。
数式以外のエントリ条件では、新規作成かどうかを判定することができないため、新規作成時と更新時両方でフローを動かす必要がある場合は、次の記載する方法で回避することになります。
対象の項目を含む数式を設定した「Boolean」型の数式リソースを [決定] 要素に配置
エントリ条件に設定していた式を数式リソースに設定し、フローの決定要素で分岐させる方法です。
まずはじめに、エントリ条件に設定していた式を数式リソースに設定します。
次に、決定要素内でエントリ条件用の数式リソースを使用して条件分岐を行います。
そして、条件に当てはまる場合は必要な処理を追加、当てはまらない場合は終了とすれば、決定要素を使用してフローのエントリ条件のような設定を行うことができます。
まとめ
Issueも一応あがってはいますが、ステータスはWorking as Expectedとなっているため、解消される予定は確認ができないようです。
解消されるという微かな希望を胸に、現状はこの記事のような回避方法を取るしかありません。
特に、新規レコード作成時にもフローを動作させたい場合は、2番目の方法(Boolean型の数式リソースを使用)を推奨します。