2025.06.20

フローでファイルを使ってみよう

Just a moment... (37089)

はじめに

こんにちは
みなさんSalesforceの「ファイル」(Salesforce Files)を活用していますか?
ローカルにあるファイルをSalesforce上に登録するだけでなく、レコードに添付したり、チームと簡単に共有したりできる機能が非常に便利ですよね。例えば、取引先や商談に関連する契約書や見積もりを、直接Salesforce内で管理できるため、わざわざファイルを探し回る手間も省けます。
今回は、そのファイル機能をフローで活用する方法に挑戦してみました!どんなシーンでファイルをフローに組み込めるのか、実際に試した内容を紹介したいと思います。

オブジェクト構成

はじめに、Salesforceでファイルを扱うためには、そのオブジェクト構成を理解するところから始めます。
これらのオブジェクトは少し複雑ですが、ファイルをうまく活用するために必要な要素です。

コンテンツのオブジェクト

写真提供:写真提供:Salesforce Developers
ContentWorkSpace と ContentWorkSpaceDoc はファイルを管理・共有するための「ライブラリ」に関するオブジェクトです。
次に、ContentDocument と ContentVersion は実際の「ファイル」を扱う中心的なオブジェクトで、ファイル本体とそのバージョンをそれぞれ管理します。
そして ContentDocumentHistory と ContentVersionHistory は、その名の通り「履歴(History)」を記録するオブジェクトで、ファイルやバージョンの変更履歴を保持しています。
ファイルに関連するオブジェクトは、ほかにもたくさんあります。ここでは紹介しきれないため、気になる方はぜひ調べてみてください。

フローの作成

ここからは実際にファイルを使用してフローを作成していきます。
Salesforceでは、ファイル(ContentVersionやContentDocumentLinkなど)の更新をトリガーにレコードトリガーフローを使うことはできません。これらのオブジェクトはフローのトリガー対象に含まれておらず、標準の方法ではファイルのアップロードや更新を直接検知することができないという制限があります。
そのため、今回はスケジュールトリガーフローを使って「ファイルが作成・更新された場合に、関連する商談のフラグを更新する」処理を実現する方法をご紹介します。

シナリオ

フロー種別:スケジュールトリガフロー
シナリオ:前日に商談に紐づくファイルが更新された場合、毎日午前5時に商談の「ファイル更新フラグ」項目をTrueに更新。

それぞれの処理内容について、説明していきます。
まず、毎朝5時に起動するスケジュールトリガフローを設定し、コンテンツ更新日(LastModifiedDate)が前日のレコードをすべて取得します。

項目 演算子
ContentModifiedDate 次の文字列と一致する Today()-1
取得したレコードコレクション変数でループを回します。

ループの中でそれぞれの ContentDocumentId を取り出し、テキスト型のコレクション変数にまとめて格納します。
このIDはファイルそのものを表すため、後の処理で「誰に紐づいているか」を調べるキーになります。

次に、先ほど格納したContentDocumentIdを使って、それらのファイルが紐づいているレコード情報(ContentDocumentLink)を取得します。

項目 演算子
ContentDocumentId 次に含まれる ContentDocumentIdを格納したコレクション変数
取得したContentDocumentLinkレコードをループし、それぞれのLinkedEntityId が商談(Opportunity)であるかを判定します。

商談かどうかの判定はIDの先頭3文字が "006" であれば商談なので、LEFT(LinkedEntityId, 3) = "006" の条件でチェックします。

リソース 演算子
LEFT(ループの現在の項目.LinkedEntityId, 3) 次の文字列と一致する 006
条件に一致した場合にテキスト型のコレクション変数にLinkedEntityIdを格納します。

最後に、IdがLinkedEntityIdを格納したコレクション変数に含まれる商談のフラグをTrueに更新します。

項目 演算子
Id 次に含まれる IdがLinkedEntityIdを格納したコレクション変数
以上でフローの作成が完了しました。

まとめ

今回はファイルを使用してフローを作成してみましたが、いかがでしたでしょうか。
Salesforceのファイル関連オブジェクト(ContentVersion・ContentDocument・ContentDocumentLink)は、やや特殊な構造をしており、それぞれのリレーションを理解するのが難しいと感じる方も多いかもしれません。
特に「ファイル」=「ContentVersion」だと思って操作を始めると、実際にはそれがバージョン情報であり、レコードへの紐づけには ContentDocumentLink が使われているなど、構造の違いに戸惑う場面もあります。
今回のようにフローを通じて実際にデータの流れをたどってみることで、オブジェクト間の関係が理解しやすくなると思います。
今回使用したオブジェクト以外にもContent~オブジェクトはたくさんあるのでぜひ調べてみてください!
35 件
     
  • banner
  • banner

関連する記事