AppFlowを使ったSalesforce→ S3のCSVファイル連携について

この記事について

業務でAppFlowを使って以下を実装したので、その際に気づいたこと、設定方法を紹介したいと思います。

  • S3に出力されたCSVファイルをSalesforceのオブジェクトのレコードとして連携

  • 反対にSalesforceのオブジェクトのレコードをCSVファイルとしてS3に出力

前回の記事では、「S3に出力されたCSVファイルをSalesforceのオブジェクトのレコードとして連携」の手順を紹介していきましたので、

今回は「SalesforceのオブジェクトのレコードをCSVファイルとしてS3に出力」を紹介していきます。

↓前回の記事

そもそもAppFlowとは?

こちらも前回の記事で説明しましたので、端折ります。

AppFlow作ってみる(Salesforce → S3)

以下の手順でAppFlowを作ってみます。
※ Salesforceは事前にユーザ登録をしておいてください。参考はこちら

手順1: Salesforceでカスタムオブジェクトを作成

こちらも前回の記事で説明しましたので、端折ります。
前回作成したカスタムオブジェクト(Attendance__c)を使って、AppFlowを構築したいと思います。

手順2:CSVを出力するS3バケット等の用意

AppFlowがCSVファイルを出力するS3バケットを作成していきます。

s3://test-bucket-to-s3/attendance/

手順3:AppFlowとSalesforceとの接続情報の作成

こちらも前回の記事で説明しましたので、端折ります。

手順4:AppFlowの構築

ここからはAppFlowをしていきます。

まずはフローの詳細を設定。
フロー名を適当に入力。
データ暗号化、タグという項目がありますが、ここでは入力しません。

次は、フローを設定。
送信元の詳細で、送信元名でSalesforceを選択。
選択したら「接続する」で先ほど作成した接続情報を選択します。
さらに、先ほど作成したカスタムオブジェクトの「勤怠」を選択します。

送信先の詳細で、S3を選択。
選択したら、先ほど作成したCSVファイルを出力するS3 Pathを入力します。
入力すると自動的に、S3 Pathのフロー名が末尾に追加されてディレクトリが切られます。

今回、フロートリガーはオンデマンドを選択します。
スケジュール実行を選択すると、実行時間やどれくらいのタイミング(分ごと/時間ごと …etc)で取り込むかの指定、転送モード(全分 or 差分)が選択できます。

データフィールドをマッピングで、「手動でフィールドをマッピングする」を選択。
ここでいうマッピングは、送信元フィールド(Salesforceオブジェクト項目)と送信先フィールド(S3に出力するCSVの項目)の対応のことです。

送信元から送信先フィールドへのマッピングでは、マッピングされたフィールドを選択します。
左側がSalesforceオブジェクトの項目名で、右側が出力するCSVのフィールド名(CSVキー名)。
項目を選択して「フィールドを直接マッピングする」を選択すると、自動的にフィールド名が自動入力されます。

パーティションと集約の設定では、出力するCSVファイルをどういったS3 Path配下に出力するかを選択します。
下記画像だと実行IDを指定していて、選択すると以下のようなS3 PathにCSVを出力します。
※厳密には拡張子がCSV形式ではないですが、カンマ区切りのテキストファイルです。

s3://test-bucket-to-s3/attendance/test-flow-attendance-to-s3/<execution_Id>

集約の設定では、Salesforceオブジェクト(ここでは勤怠オブジェクト)のレコードをどのようにファイルに出力するかを選択できます。
「複数ファイルに集約する」を選択すると、容量によってファイルを分割することができます。

妥当性確認は、フィールド名と条件を指定することで、フローを停止するか、レコードを無視して連携するかを選択できます。

あとは流れで進めてフローを作成完了します。

動作確認してみます。右上のフローを実行をクリックします。
オンデマンドなので、実行されます。

4件成功とポップアップ出ました。

S3見てみます。
確かに先ほど指定したS3 Pathにファイルが出力されています。

s3://test-bucket-to-s3/attendance/test-flow-attendance-to-s3/<execution_Id>

中身を見ると、以下のようになっていました。
Salesforceの勤怠オブジェクトのレコードが連携されていることがわかりました。

{"CustomId__c":"20220211_ABCDEF2","WorkingDay__c":"2022-02-11","EmployeeID__c":"ABCDEF2","WorkingTime__c":6.0}
{"CustomId__c":"aaa","WorkingDay__c":null,"EmployeeID__c":null,"WorkingTime__c":null}
{"CustomId__c":"20220211_ABCDEF1","WorkingDay__c":"2022-02-11","EmployeeID__c":"ABCDEF1","WorkingTime__c":8.0}
{"CustomId__c":"20220211_ABCDEF3","WorkingDay__c":"2022-02-11","EmployeeID__c":"ABCDEF3","WorkingTime__c":5.0}

以上で、Salesforce→ S3のCSVファイル連携のAppFlow構築が完了しました。

前回の記事と今回の記事を併せてAppFlowで以下を実現しました。

  • S3に出力されたCSVファイルをSalesforceのオブジェクトのレコードとして連携

  • 反対にSalesforceのオブジェクトのレコードをCSVファイルとしてS3に出力

この記事が気に入ったらサポートをしてみませんか?