記事の概要
ExcelのPowerQuery機能でDynamics365のデータを取得できます。
- Dynamics365上で列として表示できないような、GUIDなども取得できます。
- エンティティとして高度な検索で選択できないようなテーブルのデータも取得できます。(個人ビューなど)
- PowerAppsのモデル駆動形アプリにも同様の手順が可能です。
PowerQueryについて
ExcelでPowerQueryの機能を使えると最近知りました。
PowerQueryはPowerBIでも使われている、データをSQLなしで取得でき、さらに結合したり計算列を設定したりなどできるものです。
今回は単純に取得する場合の手順です。
プライベートで使っているOfficeは2013では、下の記事のようにはいきませんでした。
ODataのデータを取り込むメニューはあったのですが、Dynamics365にログインできませんでした。。。
このあたりはなにか方法があるかもしれません。
(Excel2016はできるかわからないです)
Office365のライセンスがあれば、Excelが最新化されて下の記事の方法が使えるようになりました。
手順
WebAPIのURLが下記のようにありますが、v9.0以上にアップデートする前は、末尾を8.2にする必要があります。
また、日本リージョンでOffice365のテナントを展開している場合は、crmでなく、crm7です。
https://<tenant>.crm.dynamics.com/api/data/v9.0
tenantの部分は利用している環境のテナント名に置き換えます
サインインボタンを押してサインインします。
このときエラーが出るときは、先に入力したURLが間違っているかもしれません。
例えば、crmに7をつけ忘れた場合は、「リモート名が解決できません」と表示されてサインインできませんでした。
うまくいくと下記のようにテーブルが表示されます。
内部のテーブル名で表示されているため、知っているエンティティに対応がないテーブルがたくさんあると思います。
Google等で検索すると対応するエンティティがわかるものもあります。
私もDynamics365のオンプレ版は触ったことがないので、確実な対応はわからないのですが。。。
下記はsavedqueriesテーブルで、システムビューのデータを保存しているテーブル。。。だったと思います。
個人ビューはuserqueriesだったと思います。。。曖昧ですみません。
ここでテーブルを選択して編集ボタンを押すと下記の画面になります。
いろいろできるのですが、今回はそのまま閉じて読み込むを押します。
最後に
SaaSサービスはDBが見えないせいで、たまにむず痒い思いをすることがあったのですが、
この方法なら見れます。
WebAPIで取得できるということは、個人ビューなどをWebAPIによって一括挿入・更新できるのでしょうか。
試す価値はありそうですね。
「データの更新」でデータも更新できると思います(まだ試してない)
テーブルからピポットテーブルやグラフを作ると、Dynamics365にアクセスせずして帳票作成的なことができるかもしれないですね。