レコードのファイルを自動で削除するフロー

レコードのファイルを自動で削除するフロー

ファイルストレージ、気づくとひっ迫していることも。ファイル周りは少し構造が難しいのですが、自動削除に挑戦してみました。
レコードのファイルを自動で削除するフロー
55
レコードのファイルを自動で削除するフロー
キウイ
2022/06/22 08:56:45
(2022/6/21:初回投稿、2022/6/22:フロー実行タイミングのテキストを修正しました🙇‍♀️)

Salesforceの活用が進むと増えてくるのが自動化のご要望。フローではワークフロールールやプロセスビルダーではできなかった「レコードの削除」ができるので、一歩進んだ自動化も設定が可能です。また、扱えるオブジェクトもプロセスビルダーより多く、表に見えないオブジェクトも操作することができます。

今回は『ファイルの削除』をフローで挑戦してみます。

<要件>
「応募者」の状況が「不採用」になったら応募者レコードに添付のファイル(履歴書・職務経歴書)を削除したい(採用部門をイメージ)


フローの設定手順

1.「レコードトリガーフロー」で開始条件を設定します

・オブジェクト:応募者(カスタムオブジェクト)
・フローをトリガする条件:レコードが更新された
・エントリ条件を設定:
[条件の要件] すべての条件に一致(AND)

項目演算子
条件となる項目
(今回はStatus2__c)
次の文字列と一致する条件となる値
(今回は「不採用」)

・更新されたレコードでフローを実行するタイミング:条件の要件に一致するようにレコードを更新した時のみ
・フローを最適化:アクションと関連レコード


2.「レコードを取得」要素を設定します

・このオブジェクトのレコードを取得:コンテンツドキュメントリンク
・絞り込み:
[条件の要件] すべての条件に一致(AND)

項目演算子
LinkedEntityId次の文字列と一致する$Record>カスタムオブジェクト ID

・保存するレコード数:すべてのレコード
・レコードデータの保存方法:項目を選択してあとはSalesforceに任せる
項目:デフォルトのIDに加えて、【+項目を追加】ボタンから「ContentsDocumentId」を追加します


3.「ループ」要素を設定します

・コレクション変数を選択:手順2のレコード取得要素のAPI名がついたコンテンツドキュメントリンクのコレクションを選択します
反復処理の方向はどちらでも構いません。

4.コンテンツドキュメントレコードを保存するための変数を2つ作成します

画面左のマネージャ内【新規リソース】ボタンより変数を作成します

1つめ:レコード(単一)変数
リソース種別:変数
データ型:レコード
オブジェクト:コンテンツドキュメント

2つめ:レコードコレクション変数
リソース種別:変数
データ型:レコード
オブジェクト:コンテンツドキュメント
複数の値を許可(コレクション)にチェック


5.ループの中で「割り当て」要素を設定します

変数演算子
手順4のレコード(単一)変数>Id(ContentDocument ID)次の文字列と一致するループ(手順3のAPI名)現在の項目>ContentsDocumentId

変数




6.手順5の要素に続けて「割り当て」要素を設定します

変数演算子
手順3で作成した
レコードコレクション変数
追加手順3で作成、手順5で割り当てした
レコード(単一)変数

変数


(値を設定する際、レコード(単一)変数 > をクリックした後に、枠外をクリックすることで
目的のレコード(単一)変数そのものを選択できる挙動、ちょっとトリッキーなので正しい手順なのか不安です…;)


7.ループの外で「レコードを削除」要素を設定します

削除するレコードを検索する方法:
レコード変数またはレコードコレクション変数に保存された ID を使用
削除するレコードを選択:
レコードまたはレコードコレクション 手順4で作成、手順6で追加割り当てしたContentsDocumentレコードコレクション変数

完成したフローがこちら。

【保存】し、【デバッグ】で動作を確認できたら、【有効化】します。

有効化後、実際にレコード操作してみると…

「ファイル」のPDFファイルが消えました!

削除したファイルは「ごみ箱」に入っています。


少し複雑なSalesforceのコンテンツ周り

「ファイル」は、アップロードすると複数のオブジェクトで管理されます
ContentDocument:アップロードされたファイルを表す
ContentDocumentLink:ファイルを共有する場所とのリンクを表す
ContentVersion:ファイルの特定のバージョンを表す

★詳細は公式のドキュメントを参照してください
Salesforce および Lightning プラットフォームのオブジェクトリファレンス

ファイルを削除するにはContentDocumentを削除すれば良いのですが、ContentsDocumentは添付先のレコードとは直接の関連がありません。そのため今回のフローでは間にあるContentsDocumentLinkを取得してから、削除するContentDocumentを決定しました。




ちなみに、ファイルが常に1件であればループは不要です。「ループ」はプロセスビルダーには無かった要素なので開発者ではなくアドミンの私は最初はなかなか理解できなかったのですが、少しずつ使えるようになってきました。


どんどん設定しやすくUIが改善されているフロー、諦めていた自動化にもう一度チャレンジしてみても良いかもしれません。
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
55
コメント