【Dynamics CRM】【Azure】【SharePoint】Dynamics CRMのPluginからSharePoint REST APIを操作する
以前の記事でDynamics CRM PluginからAzure ADのoAuth認証を紹介しましたが、実践編?みたいな形ということで、実際にSharePointのREST APIを操作してみました。
やっていることは、基本的にAzure ADとShraePoint REST APIの使い方ですが、Dynamics CRM関連のBlogなので、あえて、Dynamics CRM PluginからRequestを投げています。
(Share Point REST APIのお勉強も兼ねて)
ちなみに、海外のBlogではSOAP・STS(Security Token Service)ベースでSharePointと連携しているものもあります。
CRM Online to SharePoint Online Integration using REST and ADFSbingsoft.wordpress.com
WorkFlowActivityベースで使えるサンプルソースもあるので、結構おすすめです。
SharePoint REST API
■SharePoint 2013 REST サービスの概要
https://msdn.microsoft.com/ja-jp/library/office/fp142380.aspx
■REST を使用してフォルダーとファイルを操作する
https://msdn.microsoft.com/ja-jp/library/office/dn292553.aspx
以下のHTTPRequestを使って、Folderを作成します。
url: http://site url/_api/web/folders method: POST body: { '__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': '/document library relative url/folder name'} Headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value accept: "application/json;odata=verbose" content-type: "application/json;odata=verbose" content-length:length of post body
ソースコード
今回は、取引先企業作成時に、取引先企業名を取得して、対象のSharePointドキュメントライブラリにフォルダを作成するというPluginです。
あらかじめAzure ADでアプリケーション登録を行い、SharePointへの権限を付与しておいてください。
最近は、自動的にSharePointFolderを作成する機能が追加されたので、あまりいらない感じもしますが、
まあ、非同期で動いているものなので、ほかの何かプログラムと組み合わせて、ファイル作成とかもやりたりのであれば、こういったアプローチが必要になるかな、と思います。
所感
同じMicrosoft Cloudなのだから、もうちょっとうまーく、連携できればと思うんですけどね。
やっぱりID・PWをPluginに管理させるのは、ナンセンスなので。。。
この辺でうまいアプローチがあったら、ぜひ教えてほしいところです。