【Dynamics 365】【CData】CData Excel Add-In for Dynamics CRMを使ってみた
最近JDUC(Japan Dynamics User Community)やJWAC(Japan Web API Community)等の勉強会でお世話になっているCDataさんのアドインが思っていた以上に便利(失礼……)だったので、書き留めておきたいと思います。
Cdata Software Japan 公式
なお、今回はDynamics 365とExcelの部分に絞っていますが、CDataさんのところでは、Dynamics 365以外のクラウド・オンプレサービスと連携可能なドライバー・ライブラリをたくさん提供しています。
今回のアドインは以下から試用版がダウンロードできますが、他にもSalesForceやKintoneなどの連携アドインが公開されています。
Microsoft Dynamics CRM Drivers - ダウンロード
購入する場合は、各販売パートナー、XLSoftさんなどから行えるみたいですね。
CData Software Japan - Purchase
もうちょっと突っ込んだドライバーなどが知りたい場合は、以下のスライドが参考になりそうかなと。
www.slideshare.net
次回はできればADO.NET周りをやりたいところです。
そもそもDynamics 365 のExcel機能ってどうなのよ
さて、ツールの紹介をする前に、Dynamics 365そのもののExcel機能ってどうだったかなと。
Dynamics 365はマイクロソフト製品なので、標準のExcel連携(ExcelOnline、データエクスポート、データインポート、テンプレート、ピボットなどなど)が結構充実しています。でも、ちょこちょこ不満もあったりします。
その不満を集約すると、以下の2点になるかなぁと
・インポート・エクスポートがCRMから出力したタイミングのExcelに依存
・表示項目がビューに依存
データのインポート、エクスポートを行う際は都度CRMから最新のExcelをDynamics からダウンロードしないといけません。
また、基本的にCRMから出力したExcelの表示項目はビューに依存しているため深い階層のJoinや集計といったことはExcel上で一手間かけないといけません。(まあ、CRM上でうまくやりくりしろよとか、Power BIでもいいじゃん、というのはあるんですが、やっぱりまだまだデータの更新などはExcelに依存する部分が多々あります)
Dynamics CRMを初めて触った、通常のスクラッチ開発者やデータ分析のためにSQLは使えるユーザーにはこの制約が意外と大きな落とし穴を産んでいるんじゃないかなと感じる場面がそれなりにあります。
ExcelOnline連携とか便利ではあるんですけどね。
そんなExcel連携のちょこちょこした不満を結構解消してくれるアドオン製品がCData Excel Add-In for Dynamics CRM 2016Jかなぁと思います。
CData Excel Add-In for Dynamics CRM 2016Jでどんなことができるの?
このExcelアドイン、単純に言ってしまえば、Excel上だけでDynamics CRMへのデータアクセス・処理がSQLライクに実施できるアドインです。
以下のような感じでDynamics 365からエクスポートした時と同じような感じで、データが表示できます。
機能として取り上げるとすれば、以下の3点に集約されるかなぁと思います
・Dynamics CRM(Online・On Premiss)からSQLクエリでデータ取得が実施可能
・取得したデータは単一のExcelシート上で一括処理(作成・更新・削除)が可能
SQLクエリでアクセス可能なので、Group By、Join(内部結合・左結合)といったものもサポートするので、CRMのビュー上では実現できなかったデータの表現が可能になりますし、Excelから直接CRMにアクセスするためデータの最新化および処理がExcelだけで完結した形で実施可能です。
詳しい機能詳細は以下のリファレンスが公開されているので参考になります。
データの取得と更新・作成
なにはともあれば、まず単純にデータを取得してみます。
手順は後ほどお伝えしますが、このアドインをインストールすると、Excelのリボンに以下のようなボタンが追加されます。ここからExcel上でCRMに対して様々な処理を実施します。
ここの「取得元Dynamics CRM」をクリックすることで、データの取得クエリを書く画面が表示されます。
先程SQLでデータを取得しますとは言ったものの、GUIベースでもデータの取得だけであれば簡単に実施可能です。
対象のテーブルと列を手動で選択すればOKです。
テーブルのプルダウンには各種Entityが表示されます。
SQLクエリは以下のところで編集できますが、とりあえず今回はそのままOKをクリックします。
すると、以下のような感じで取引先企業のデータが取得ができました。
もちろんCRMから取得しています。
データの更新もExcel上だけで実施できます。そのまま値を変更して、「行の更新」をクリックすれば、CRMに反映されます。
色が変わってくれるのが地味にうれしいですね。
検索フィールドの関連付けはSDK準拠ですね。GUIDとLogicalName、PrimaryNameを指定することで関連付けられます。
新規追加も行の挿入ボタンで一気にできます。Dynamics だと更新か新規追加、どちらかだけですので、このあたりは本当にありがたいですねぇ。
OpitonsetがValueになっているので、そのあたりはOptionsetテーブルを結合するなど、工夫が必要になりそうですね。
でも、かなり手軽にCRMの更新処理ができていい感じです。
色々とSQLクエリを試してみる
もう一つの特徴としてSQLクエリでデータの取得ができますよ、とお伝えしていましたので、ざっくりと試した結果を書いていきます。
とりあえず簡単なところから。COUNTしてみました。
SELECT COUNT(*) FROM [Account]
グルーピングと集計
SELECT Address1_Country as Country,SUM(OpenDeals) FROM [Account] GROUP BY Address1_Country
結合ももちろんいけます。今回は取引先企業と取引先担当者だけですが、階層深くいけるのがやっぱりありがたいところ。
SELECT Account.Name As AccountName, Contact.FullName As ContactName FROM [Account] LEFT OUTER JOIN [Contact] ON Account.Id = Contact.ParentCustomerId_Id
やっぱりこのあたりをSQLで実施できるのがうれしいですね。
特にグルーピングはFetchXMLベースではサポートされているものの、Excel出力ではできない部分だったので、データをすべて引っこ抜いて、Excel上でグルーピングしなければいけませんでした。
地味ながらもこのあたりが、このアドインの本領発揮部分かなと思います。
そうすれば、以下のような感じで手軽にグラフにも繋げられますし、ありがたいですね!(もうちょっと複雑な集計をすれば見栄えがしますが)
インストールから接続までの手順
インストールに特に難しいことはありません。ダイアログ形式でひたすらポチポチです。
今回のアドインの試用版を以下のサイトからダウンロードして、実行します。
Microsoft Dynamics CRM Drivers - ダウンロード
以下、本当に次へ進んでいくだけなので、細かい部分は割愛
ここまでくるとExcelにアドインが追加されています。
「取得元Dynamics CRM」をクリックして、最初に接続情報を設定します。
Dynamics 365 Onlineに接続する場合は
CRM Versionに「CRM Online Office 365」
UrlにDynamics CRMのサーバーURL「https://****.crm7.dynamics.com」
あとはUserとPasswordにそれぞれ入力すれば、アクセスできます。
AuthSchemeは初期状態で繋げますが、ADFS等組んでいる場合は、適宜以下の情報を参考に設定してください。
接続できました!
所感
とりあえず、基本的なところを触っただけですが、要所要所でDynamics 365がカバーしきれない、細かな不満を拾い上げてくれるツールだなぁと。
どうしてもExcelから離れられない部分は、まだまだ多いので、こういったツールでカバーしていきたいところですね。
さて、続いてはADO.NETドライバーでEntityFrameworkを試してみたいところ。個人的にはこっちが相当気になっています。