Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Dynamics CRM】【Azure】【SharePoint】Dynamics CRMのPluginからSharePoint REST APIを操作する

以前の記事でDynamics CRM PluginからAzure ADのoAuth認証を紹介しましたが、実践編?みたいな形ということで、実際にSharePointREST APIを操作してみました。

やっていることは、基本的にAzure ADとShraePoint REST APIの使い方ですが、Dynamics CRM関連のBlogなので、あえて、Dynamics CRM PluginからRequestを投げています。

(Share Point REST APIのお勉強も兼ねて)

kageura.hatenadiary.jp

ちなみに、海外のBlogではSOAPSTS(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に管理させるのは、ナンセンスなので。。。

この辺でうまいアプローチがあったら、ぜひ教えてほしいところです。

参考

sharepoint.orivers.jp

freedom-man.com