DataSpider CloudでSalesforceの複数選択リストの値を分割するテクニック

今回はよくお問い合わせがあるDataSpider CloudでSalesforceの複数選択リストを利用する方法を紹介します。 SOQLで複数選択リストを取得すると、値が「;」で区切られていますが、この文字列を分割して、複数レコードを作成するスクリプトを作りました。

みなさん、こんにちは。製品営業本部の河合です。

今回はDataSpider Cloudのサンプル紹介です。
Cloudと書いてますが、DCSpiderやDataSpider Servistaでも作成可能です。

ある要件を実現可能か、とのお問い合わせをいただいたため「まあ、できるだろう」と軽い気持ちで検証しました。
実現はできたのですが、かなり変化球なものとなりましたので、一例として紹介させていただきます。

要件

まずは要件の紹介です。
文章だとイメージしにくいので、次の図をご覧ください。

Salesforceから取得した複数選択リスト項目が図のvalueのようになっており、「;」で区切られた文字列を分割し、キーと組み合わせて1行ずつ出力したい、といった要件です。

スクリプト解説

続いてスクリプトを見ていきます。
こちらが全体図です。
※サンプルスクリプトを添付する関係で、CSV→CSVの連携としています。

ざっくりとした処理の流れは次の通りです。

次からはポイントとなる箇所を見ていきます。

1. 置換用CSVの準備

「;」を「改行コード」に置換するにはMapperロジックの「CSVファイルによる置換」を使います。
こちらは置換前と置換後の値をCSVファイルに定義することで、文字列の置換を行う機能です。

事前準備として、次の内容のCSVファイルを作成します。
;,"
"
置換用CSVの内容

2. 文字列の置換

読み取ったデータはforeachで処理します。

まずはkeyとvalueを変数に退避します。
その際、valueに「CSVファイルによる置換」を実行します。

3. 一時ファイル書き込み

先ほどの置換処理によって、「;」が「改行コード」に置換されていますので、これをファイルに書き出します。
ここでは「HTMLファイル生成」を使用し、次のように設定します。
出力ファイルの拡張子がCSVですが、問題なく動作します。

4. 一時ファイルから出力ファイルへ書き込み

あとは一時ファイルを「CSVファイル読み取り」で読み取り、keyと合わせて出力ファイルに書き込めば完成です。

おわりに

今回のポイントは「;」を「改行コード」に置換したものを一時ファイルに出力するところです。
これにより、1行を1レコードとして扱うことができるようになります。

この方法は他の区切り文字のデータや、複数行項目でも利用可能ですので、個別の要件に合わせてカスタマイズしていただければと思います。

最後に、作成したスクリプトを添付します。
置換用CSVなども同梱していますので、ぜひダウンロードして動作を確認してみてください。

※サンプルは2020年10月時点のDataSpider Cloud(v1.4)で作成しています。今後のアップデートや古いバージョンのDataSpider Servistaでは正しく動作しない可能性もありますので、予めご了承ください。

それでは今回の記事は以上です。
最後までお付き合いいただきありがとうございました。

サンプルスクリプト

ダウンロード
複数選択リスト値の分割サンプル.zip (30.6 KB)