前回はローカルのExcelファイルからSalesforceへインポートしてみたので 今回はSalesforceからデータをエクスポートして、Excelファイルに格納してみます。
今回の参考URLはこちら↓
- tSalesforceInput - Talend Open Studio Components v5.5.1 - Reference Guide (EN)
- tSalesforceConnection - Talend Open Studio Components v5.5.1 - Reference Guide (EN)
完成形はこんな感じになります。
tSalesforceInputコンポーネントではSalesforceからデータを抽出します。
プロパティタイプにリポジトリを利用していますが、ジョブの実行の度に 「組み込み」にするかどうかを聞かれるので、組み込みの方が良いかもしれないです。 クエリ条件で条件を付与する場合は以下のように、WHERE無しの条件句を設定します。
"Name = 'aaa' OR Name = 'テスト会社'"
オブジェクトで「アカウント」等の標準オブジェクトを指定すると、自動的にスキーマが更新され、標準項目がセットされます。ただし、このままだと内部で利用するSOQLは標準項目しか抽出しないため、カスタム項目は取得できません。カスタム項目も取得したい場合は、「SOQLクエリの手動入力」にチェックをつけて、クエリを入力します。
この場合は、クエリで取得する項目の順番に応じて、スキーマを適切に手動更新する必要があります。
tFileOutputExcelはこんな感じになります。
tSalesforceInputのスキーマを変更したら、output側のスキーマも更新する必要があります。「全てのカラムを自動サイズ調整」にチェックをつけると、Excelのカラムの幅を文字数に応じて自動的に調整してくれるので、Excelで閲覧する時の一手間が無くなり、便利です。
セッションID取得にOAuth2.0を利用したい場合
tSalesforceInputにおいて、以下のように設定を行うことで対応可能です。
Consumer Key, Consumer Secretは接続アプリのものを入力します。 Token Fileはrefresh_tokenを格納するためのファイルになるので、空ファイルを作成しておきます。OAuth2でジョブを実行した場合はOAuth用のWebサーバがローカルに立ち上がります。 このWebサーバの設定がCallBack Host, CallBack Portになります。
Salesforceの接続アプリケーションは以下のように設定します。
ローカルのWebサーバのCallback Host, CallBack Portに応じてコールバックURLを設定してください。また、refresh_tokenのscopeの付与も忘れないようにしてください。
実行をすると
Paste this URL into a web browser to authorize Salesforce Access: https://login.salesforce.com/...
とログに出力されるので、authorizeのURLをコピーして適当なブラウザでアクセスして、OAuth2.0のAuthorization Code Grantのフローを回します。
接続アプリケーションでrefresh_tokenのscopeが設定されていれば、一回ジョブを回した後は、Token Fileで指定したファイルにrefresh_tokenが保存され、次回以降はrefresh_tokenを使ってaccess_tokenを自動的に取得してくれるため、ブラウザを使ったauthorizeの必要が有りません。
接続の使い回しについて
複数コンポーネントで同一Salesforce組織に対して接続する場合、その都度、SOAPやOAuth2.0によってセッションIDを取得するのは非効率です。同じ環境への接続を使いまわすために、tSalesforceConnectionというコンポーネントを利用できます。以下のように接続完了をトリガとして出力するコンポーネントとして利用します。
tSalesforceConnectionの設定は他のコンポーネントの接続設定と同様にして行い、Salesforceの各コンポーネントでは以下のように「既存の接続を使用」にチェックを付けて、対象の接続を選択することで、セッションIDを使いまわすことが出来ます。