Salesforceのレコードを元に Excelファイルデータを生成:CData ArcのExcel コネクターの使い方

by 杉本和也 | 2020年04月30日

f:id:sugimomoto:20200427110217p:plain

こんにちは。CData Software Japan リードエンジニアの杉本です。

ローコードのデータ連携ツールであるCData Arcでは様々なコネクターをサポートしていますが、ちょっと使い方がイメージしづらいものもあります。

arc.cdata.com

そこで今回はお問い合わせをよく頂く「Excel」コネクターの使い方を解説します。

Excelコネクターとは?

CData ArcのExcelコネクターは受け取ったXMLデータを元にExcelファイルを生成することができるコネクタです。

http://cdn.arcesb.com/help/AZF/mft/Excel.html

以下のようなテンプレートを使って、Excelファイルを出力することが可能になっています。

f:id:sugimomoto:20200427110224p:plain

なお、注意していただきたいのは、Excelファイルを生成するために使うためのコネクターであり、Excelファイルからデータを読み取ることを目的としてはいない、という点です。

もし、Excelファイルからデータを読み取りたい場合は別途 CData コネクターとCData Excel Driverの利用を検討してください。

https://www.cdata.com/jp/drivers/excel/

f:id:sugimomoto:20200427110233p:plain

前提条件

ExcelコネクターはSalesforceから取得したデータ、CData Arc上でのXMLの構成によって出力するアプローチが異なります。

XMLファイルが1レコード単位の場合は、そのレコード毎にExcelファイルが生成されます。 XMLファイルに複数レコードの構成(Salesforce から一括取得の構成)をしている場合は、一つのExcelファイルに複数レコードのデータを出力することが可能です。

今回の記事でデモとする対象データは共通で「Account」テーブルに含まれる「AccountNumber」「Name」「Phone」の3つの項目としました。

f:id:sugimomoto:20200427110241p:plain

以下の様なデータが取得される想定です。

f:id:sugimomoto:20200427110246p:plain

テンプレートの作成方法

サンプルExcelファイル

テンプレートは以下のように 「<rsb:call op="xmlDOMSearch?uri=[FilePath | urlencode]&xpath=/Items/Account">」「</rsb:call>」というXMLの設定と 受け取ったXMLの値を取り出すための「[xpath("Name")]」という要素で構成されます。

テンプレート作成

XMLはコメントでもセルに入力しても大丈夫です。 「<rsb:call op="xmlDOMSearch?uri=[FilePath | urlencode]&xpath=/Items/Account">」「</rsb:call>」の間の列もしくは行の範囲内でデータを取り出すための 「[xpath("Name")]」という要素が利用できます。

また、XML設定で重要なポイントは「xpath=/Items/Account」の部分です。これは受け取ったXMLのどの深さの要素を取得するか、を定義しています。

今回は以下のようなXMLを対象とするので、Itemsに含まれる、Accountの要素を取得するため「/Items/Account」を指定しています。もし、Contactテーブルになった場合は「/Items/Contact」となります。

f:id:sugimomoto:20200427110316p:plain

作成したテンプレートは以下のようにExcelコネクタのTemplateFileへ指定します。

f:id:sugimomoto:20200427110322p:plain

1レコード・1Excelファイルに出力する場合

先程のテンプレートで実際にSalesforceからデータを取得してみます。 以下のようにSalesforceのAccountレコードはXMLファイルそれぞれで出力されます。

f:id:sugimomoto:20200427110328p:plain

最終的なエクセルテンプレートの出力も、1XMLファイル1Excelの形で出力されます。

f:id:sugimomoto:20200427110335p:plain

そして、Excelファイルを開いてみると、以下のように結果が出力されます。コメントなどに指定していたXMLは消えてします。

f:id:sugimomoto:20200427110342p:plain

複数レコード・1Excelファイルに出力する場合

複数レコードをまとめて1Excelファイルに出力したい場合は、Salesforceコネクタ側でまとまったXMLファイルを出力するようにオプションを設定します。

Salesforceコネクタを開き、対象のOutputをコードで編集します。

f:id:sugimomoto:20200427110348p:plain

そして、対象のクエリの隣に「batchResults="true"」を設定します。

f:id:sugimomoto:20200427110354p:plain

これにより取得されるXMLファイルが一つだけになります。

f:id:sugimomoto:20200427110400p:plain

中身は以下のように複数のレコードが一つのXMLファイルになっています。

f:id:sugimomoto:20200427110406p:plain

最終的に出力されるExcelファイルも一つとなり

f:id:sugimomoto:20200427110413p:plain

以下のような結果を得ることができます。 ポイントは「<rsb:call op="xmlDOMSearch?uri=[FilePath | urlencode]&xpath=/Items/Account">」「</rsb:call>」で指定された要素が繰り返しロードされていく、という点です。これで連続した帳票なども構成できます。

f:id:sugimomoto:20200427110419p:plain

シンプルな一覧を作りたい場合

サンプルExcelファイル

シンプルな一覧テーブルを作りたい場合は、以下のようなExcelテンプレートを構成します。 始点の「<rsb:call op="xmlDOMSearch?uri=[FilePath | urlencode]&xpath=/Items/Account">」をレコードの1行目に指定してください。 終点の「</rsb:call>」は次のレコードの始点になります。

f:id:sugimomoto:20200427110428p:plain

これでCData Arcを実行すると、以下のようなデータが得られます。

f:id:sugimomoto:20200427110434p:plain

おわりに

今回はシンプルなテンプレートを作成しましたが、ネステッドされたXMLファイルなどを使うことでヘッダー・明細形式のようにも対応できます。

もし不明な点があれば、お気軽にテクニカルサポートまで連絡ください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。