ワークフローで HTTP Web サービスを利用する

SharePoint サポートチームの江口です。今回は、SharePoint Online/SharePoint Server 2013 (オンプレミス) で、ワークフローで HTTP Web サービスを利用する方法についてご案内します。

 

はじめに

SharePoint Designer 2013 では、SharePoint 2013 プラットフォーム ワークフローを作成することができます。

SharePoint 2013 プラットフォーム ワークフローには、新しく追加された "HTTP Web サービスを呼び出す" アクションを使用することができます。

このアクションを使用することで、例えば SharePoint REST サービスのような HTTP Web サービスをワークフロー内で利用できます。

 

以下の手順では、例として 同じ SharePoint サイト内のリストに含まれたリスト アイテムの数を取得する方法について手順を記載します。

 

- 目次

手順 1) SPD ワークフローの作成

手順 2) "辞書を作成 アクション" の追加

手順 3) "アクション : HTTP Web サービスを呼び出す" の追加

手順 4) "アクション : 辞書からアイテムを取得する" の追加

 

 

手順 1 ) SPD ワークフローの作成

1-1) SharePoint Designer 2013 を起動し、SharePoint サイトを開きます。

1-2) [リスト ワークフロー] - [<<任意のリスト>>] を選択します。

1-3) [リスト ワークフローの作成] ダイアログで以下のように設定し [OK]をクリックします。

  名前: 任意

  説明: 任意

  プラットフォームの種類: SharePoint 2013 ワークフロー

 

 

 

 

2) "辞書を作成 アクション" の追加

2-1) [アクション] - [辞書を作成] をクリックします。

  追加される文字列: "この" 辞書を作成する ("変数: 辞書"へ出力)

2-2) "この" をクリックし、"辞書の構築" ダイアログで以下の項目を追加します。

  名前 : Accept

  種類 : 文字列

  値 : application/json;odata=verbose

 

 

2-3) "変数: 辞書" をクリックし、任意の変数 (以下、RequestHeaders1 (種類:辞書)) を指定します。

 

 

 

手順 3) " アクション : HTTP Web サービスを呼び出す" の追加

3-1) [アクション] - [HTTP Web サービスを呼び出す] を追加します。

  追加される文字列: 次に "要求" で "この" HTTP Web サービスを呼び出す (ResponseContent は "応答" | ResponseHeaders は "応答ヘッダー" | ResponseStatusCode は "変数: 応答コード")

3-2) 追加される文字列にカーソルを合わせ、[下矢印] - [プロパティ] をクリックします。

 

 

3-3) "HTTP Web サービスを呼び出す プロパティ" ダイアログで、[RequestHeaders] に、上記手順 2-3) で指定した RequestHeaders1 を指定し [OK] をクリックします。

 

 

 

3-4) 追加される文字列の "この" をクリックし、"HTTP Web サービスを呼び出す" ダイアログで、以下の項目を入力します。

  HTTP Web サービスの URL を入力 : https://server/sites/site/_api/lists/getbytitle('<<リスト名>>')/ItemCount

    例 ) https://server/sites/site/_api/lists/getbytitle('ListName')/ItemCount

  HTTP メソッドの指定 : HTTP GET

 

 

補足: 指定した URL は SharePoint REST エンドポイントです。REST サービスの詳細については、後述の参考情報を確認してください。

 

3-5) "応答" をクリックし、任意の変数 (以下、ResponseContent1 (種類:辞書)) を指定します。

 

 

 

手順 4) "アクション : 辞書からアイテムを取得する" の追加

4-1) [アクション ] - [辞書からアイテムを取得する] を追加します。

  追加される文字列:次に "辞書" から "名前またはパスに基づいて取得したアイテム" を取得する ("アイテム" に出力)

4-2) "辞書" をクリックし、上記手順 3-5) で指定した ResponseContent1 を指定します。

4-3) "名前またはパスに基づいて取得したアイテム" をクリックし、"d/ItemCount" と入力します。

4-4) "アイテム" をクリックし、任意の変数 (以下、ItemCount1 (種類:整数)) を指定します。

 

 

 

上記手順で、変数 ItemCount1 に ListName のリストアイテム数が格納されます。

 

 

補足: 手順 4-3) について

上記手順で設定した "HTTP Web サービスを呼び出す" アクションの ResponseContent1 には、JSON 形式のデータが返されます。

https://server/sites/site/_api/lists/getbytitle('<<リスト名>>')/ItemCount のような HTTP 要求をした場合、以下のような形式で応答を返します。

  

そのため、手順 4-3) のように、JSON 形式のパスに基づき "d/ItemCount" とパスを指定して辞書からアイテムを取得します。

なお、SharePoint REST サービスでは、Accept ヘッダーに "application/json;odata=verbose" を設定することで JSON 形式で結果を取得できます。(上記手順 2-3) で設定)

設定しない場合は以下のような Atom 形式で結果が返されます。

 

 

 

参考情報

SharePoint の REST サービスに関しては、以下の技術情報を合わせて参照してください。

 

SharePoint 2013 REST サービスの概要

[方法] SharePoint 2013 REST エンドポイントを使用して基本的な操作を完了する

 

"HTTP Web サービスを呼び出す" アクションについては、以下の技術情報を合わせて参照してください。

 

ワークフロー アクション クイック リファレンス (SharePoint 2013 ワークフロー プラットフォーム)

SharePoint Designer 2013 の辞書アクションを理解する

 

既知の不具合として、SharePoint ワークフローから SharePoint HTTP (REST) Web サービス以外のサービスを呼び出すと、HTTP Web サービスの呼び出しが失敗する場合があることが報告されています。

問題の詳細と回避策については以下の公開情報を参照してください。

 

SharePoint Server 2013 の既知の問題