ファイルを添付したら添付ありチェックを入れたいその2(スケジュールトリガ)

ファイルを添付したら添付ありチェックを入れたいその2(スケジュールトリガ)

Winter'23で追加された演算子「次に含まれる」が活躍しました
ファイルを添付したら添付ありチェックを入れたいその2(スケジュールトリガ)
74
ファイルを添付したら添付ありチェックを入れたいその2(スケジュールトリガ)
キウイ
2023/04/13 09:50:55
記事「ファイルを添付したら添付ありチェックを入れたいその1(レコードトリガ)」の続きです。

ご要件:添付ファイルをアップロードしたら「添付あり」にチェックを入れたい


策2.スケジュールトリガフローで直近にアップロードされたファイルに対して対応する

難易度:中
タイムラグ:スケジュールフローのスケジュール頻度次第(当日○時)

ファイルアップロード後に添付先レコードの更新が発生しない場合は、自動化の起点を添付先レコードではなく、「コンテンツドキュメント」にする必要があります。しかし前回記事の冒頭で触れたとおりレコードトリガフローの開始条件ではコンテンツドキュメントオブジェクトを選択できないため、スケジュールトリガフローで深夜0時に前日アップロードされたファイルに対して処理を行います。

作成したフローはこちら
(4/13修正しました🙇‍♀️②*と⑩*を追加しています)


1.スケジュールトリガフローで開始条件を設定


スケジュールトリガフローでは【+オブジェクトを選択】で「コンテンツドキュメント」オブジェクトも選択可能ですが、「昨日作成された」という条件指定ができないので、開始条件ではオブジェクトは省略し、実行頻度と時間だけ設定します。

以降の設定で使用するリソースの準備

【新規リソース】ボタンから3つリソースを作成しておきます。
(要素の設定時に新規作成も可能です。)


API名(例)リソース種別データ型その他
formula_Yesterday数式日付数式:TODAY()-1
coll_ContentDocument変数テキスト複数の値を許可(コレクション)にチェック
coll_LinkedEntityIds変数テキスト複数の値を許可(コレクション)にチェック


2.「レコードを取得」要素で前日にアップロードされたファイルを取得

オブジェクト:コンテンツドキュメント
条件の要件:すべての条件に一致(AND)

項目演算子
CreatedDate以上formula_Yesterday

保存するレコード数:すべてのレコード
レコードデータの保存方法:すべての項目を自動的に保存



2*.「決定」要素で取得できたレコードがあるかチェック

前日にアップロードされたファイルが存在しない場合にエラーとなってしまうため、nullかチェックします。

表示ラベル:あり
結果を実行する条件の要件:すべての条件に一致(AND)
リソース演算子
②で取得したコンテンツドキュメントコレクションnullFalse

デフォルトの結果の表示ラベルもわかりやすく「なし」にします。


3.「ループ」要素でコンテンツドキュメントをループ

2*ありの分岐の先でループ要素を追加します。

コレクション変数:2で取得したコンテンツドキュメントレコードコレクション変数


4.ループの中に「割り当て」要素を設定し、コンテンツドキュメントのIdをテキストコレクション変数に追加

レコードコレクションからIdのみのテキストコレクションに変換するような操作です。
変数演算子
coll_ContentDocumentIds追加ループloop_ContentDocuments(③ループ要素のAPI名)の現在の項目
 >ContentDocument ID


5.ループを抜けた「最後の項目の後」に「レコードを取得」要素でコンテンツドキュメントリンクレコードを取得

オブジェクト:コンテンツドキュメントリンク
条件の要件:すべての条件に一致(AND)

項目演算子
ContentDocumentId次に含まれるcoll_ContentDocumentIds

並び替え順:並び替えなしでも問題ないですが、整理のために「LinkedEntityId」順にしました。
保存するレコード数:すべてのレコード
レコードデータの保存方法:すべての項目を自動的に保存


6.「ループ要素」でコンテンツドキュメントリンクをループ

コレクション変数:5で取得したコンテンツドキュメントリンクレコードコレクション変数


7.ループの中に「決定」要素で、添付先が要件のオブジェクトかどうかをチェック

結果の表示ラベル:応募者
結果を実行する条件の要件:すべての条件に一致(AND)
リソース演算子
ループloop_ContentDocumentLinks
(⑥ループ要素のAPI名)の現在の項目
 >リンク済みエンティティ ID
次の文字列で始まる添付先オブジェクトのプレフィックス
 (レコードIdの固定の頭3桁)


デフォルトの結果の表示ラベルもわかりやすく「応募者ではない」にします。

8.「応募者(対象オブジェクト)」の分岐の先に「決定」要素を追加し重複をチェック

同じレコードへ複数のファイルをアップロードしている場合に「LinkedEntityId」が重複するのでチェックします。

結果の表示ラベル:重複
結果を実行する条件の要件:すべての条件に一致(AND)

リソース演算子
coll_LinkedEntityIds次の文字列を含むループloop_ContentDocumentLinks
(⑥ループ要素のAPI名)の現在の項目
 >リンク済みエンティティ ID

デフォルトの結果の表示ラベルもわかりやすく「重複ではない」にします。

9.重複ではない分岐の方に「割り当て」要素を設定し、最終的に更新するレコードのIDをテキストコレクションに追加

 
変数演算子
coll_LinkedEntityIds追加ループloop_ContentDocumentLinks
(⑥ループ要素のAPI名)の現在の項目
 >リンク済みエンティティ ID


7と8の決定要素は、無くてもエラー無くフローは実行されて想定通りの挙動にはなります。
最終的に処理するIdのコレクションをより綺麗なものにするためにオブジェクトと重複のチェックを入れています。



10*.ループを抜けた先で「決定」要素で更新対象のレコードがあるかチェック

最終的に更新対象のレコードがあるかどうか、テキストコレクションがnullかで確認します。

表示ラベル:あり
結果を実行する条件の要件:すべての条件に一致(AND)
リソース演算子
coll_LinkedEntityIdsnullFalse

デフォルトの結果の表示ラベルもわかりやすく「なし」にします。


10.「レコードを更新」要素で添付先レコードを更新

10*「あり」の先でいよいよレコード更新です。

更新するレコードを検索してその値を設定する方法:レコードを識別する条件を指定し、項目を個別に設定
オブジェクト:応募者(添付先オブジェクト)
レコードを更新する条件の要件:すべての条件に一致(AND)

項目演算子
Id次に含まれるcoll_LinkedEntityIds

項目値をレコードに設定:
項目
添付あり
 (カスタムチェックボックス項目)
True
今回の「応募者」の例だとここで『「選考状況」←「書類受付済み」』を追加しても良いですね


挙動確認

4/11にファイルを添付したところ、4/12 0時にレコードが更新されて添付ありチェックが入りました🙆‍♀️


注意点

このフローはファイルをアップロードした日付(ContentsDocumentのCreateDate)で対象のファイルを決めているため、添付先レコードに【ファイルをアップロード】ではなく、事前に「ファイル」タブでアップロードしておいて、後日【ファイルを追加】から追加した場合、「添付あり」は更新されません。
▼4/10にファイルタブやライブラリへアップロード→4/11に応募者レコードへ「追加」→4/12になっても添付ありチェック入らず

ContentDocumentLinkレコードを起点にできれば良いのですが、ContentDocumentLinkはレコード取得時の制限が厳しく、「ContentDocumentIdかLinkedEntityIdが単一のIdと一致する」か、あるいは「Idがコレクション変数に含まれる」の条件指定が必要で、作成日や添付先オブジェクトで取得レコードを絞れません。そのためContentsDocumentを起点にせざるを得ませんでした。

まとめ

個人的には、ユーザが想定外のタイミングや順序でファイルをアップロードすることもあると思うので、今回のスケジュールトリガフローよりも前回記事のように「添付ファイルが必ずなければいけないタイミングでファイル有無をチェックする」方が好みです。

その1その2の全2編でお送りしましたが、ファイルまわりで引き続き検証中の内容もあるのでその内その3(画面フローで…)を執筆するかもしれません。

関連記事

レコードのファイルを自動で削除するフロー
レコード画面からメール送信時の添付ファイルを、そのレコードにも関連づけてファイルを格納したい
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
74
コメント