はじめに
またフローについてのお話です。
何回見ても間違いなく取得できているはずの項目なのに、タイトルの通り
XXX の値が設定されていないか、割り当てられていないため、フローでこの値にアクセスできませんでした。
とエラーが発生しました。
ネットで調べると出てくるのが
Contact.Account.Nameを参照していたが、そもそもAccountがnullだったせいみたい!
のようなケースですが、今回はそういうわけでもなかったので解決策にはならず。
正しい対応かわかりませんが、とりあえず対処できたのでメモメモ。
前提
例として、フローのトリガーとなるオブジェクトは取引先
。
フローの処理の内容を
- トリガーレコードに紐づく
取引先責任者
のうち、条件に一致するものを1件だけ取得 - フロー内の数式にて1.の項目値を参照
- トリガーレコードの値を、2.の数式で更新する
ような形でイメージしてください。
エラーの特定
ちなみに、タイトルのエラーメッセージですが、画面上には表示されませんでした。
画面上だと
このフローで未対応の障害が発生しました。
フローを処理中に未対応の障害が発生しました。詳細は、組織のシステム管理者にお問い合わせください。
の表示でした。
具体的にどんなエラーが出てたのかは
- 開発者コンソールを開く
- 実際にエラーになるような更新処理を実行
- 開発者コンソールの
Logs
に新しいログが出力されているので、それを開く - 下の方で実際のエラーメッセージが表示されているので、確認
という流れで見れます。
原因と対応方法
原因としてはメッセージの通り、対象の項目を取得できていないことのようでした。
「レコードの取得」に設定されているレコードデータの保存方法
を 「すべての項目を自動的に保存」 から 「項目を選択して後は Salesforce に任せる」 に変更し、対象の項目を設定することでエラーが出なくなります。
推測
おそらく、表記としては「すべての項目を自動的に保存」とありますが、実際には「フローの内部で参照されているすべての項目を自動的に保存」なんじゃないかなぁと思います。
そして、その検査時に数式の内部は見てないんじゃないかなと。
おわりに
上記を踏まえると、数式内部で利用する項目に関しては一つ一つ取得のコンポーネントに設定が必要ということになります。
め、面倒くさい・・。