# mulesoft Microsoft Sharepoint 2013 Connector - Full Documentation
# Microsoft SharePoint 2013 Connector - Mule 3
Microsoft SharePoint 2013 Connector v2.3
Microsoft SharePoint 2013 用 Anypoint Connector (SharePoint 2013 Connector) は、コンテンツとドキュメントの管理、イントラネットポータル、コラボレーション、エクストラネット、Web サイト、およびエンタープライズ検索用の Web アプリケーションプラットフォームです。
このコネクタを使用すると、REST API を介した SharePoint 2013 とのインテグレーションが可能になります。
リリースノート: [Microsoft SharePoint 2013 Connector リリースノート](#release-notes::connector/microsoft-sharepoint-2013-connector-release-notes.adoc)
サンプル: [sharepoint-connector-samples.zip](https://docs.mulesoft.com/jp/microsoft-sharepoint-2013-connector/latest/_attachments%E2%80%8B/sharepoint-connector-samples.zip)
FAQ: [\[よくある質問\]](#よくある質問)
## [](#サポートされている操作)サポートされている操作
- **リストおよびリスト項目の API**:
リストおよびリスト項目の Create、Delete、Retrieve、Update
- **ファイルおよびフォルダーの API**:
- ファイル:
ファイルの Add、Retrieve content、Retrieve metadata、Delete、Check out、Undo checkout、Check in、Publish、Unpublish、Approve、Deny、Recycle、Copy
- フォルダー:
フォルダーの Create、Delete、Retrieve
## [](#サポート対象の-microsoft-sharepoint-バージョン)サポート対象の Microsoft SharePoint バージョン
- Microsoft SharePoint 2013
- Microsoft SharePoint Online
- SharePoint Online とやりとりする場合、**FileQuery** 操作と **FolderQuery** 操作はサポートされません。
## [](#pom-ファイル情報)POM ファイル情報
Studio プロジェクトを Maven 化する場合、プロジェクトの pom.xml ファイルでこの情報を使用できます。
```xml
org.mule.modules
mule-module-sharepoint-2010
x.x.x
mule-plugin
```
`x.x.x` を使用しているコネクタに対応するバージョンに置き換えます。
最新の `pom.xml` ファイル情報を取得するには、 [Anypoint Exchange](https://www.mulesoft.com/exchange/) でコネクタにアクセスし、**\[Dependency Snippets (連動関係スニペット)\]** をクリックします。
## [](#認証)認証
SharePoint 2013 では、アクセスする Microsoft SharePoint に基づいて異なる認証スキームがサポートされます。
サポート対象のオンプレミスの Microsoft SharePoint 認証:
- NTLM
- Microsoft ADFS に対するクレームベース認証
- Microsoft ADFS から取得したセキュリティトークン
- サポート対象外の認証: Kerberos
サポート対象の Microsoft SharePoint Online 認証:
- Microsoft Online (Office 365) 管理対象ユーザー
- Microsoft ADFS に対する Microsoft Online (Office 365) 統合ユーザー
- Microsoft Online から取得したセキュリティトークン
- 標準の SharePoint Online ユーザーログイン情報
### [](#クレームベース認証)クレームベース認証
クレームベース認証を使用するようにコネクタを設定するためには、認証で使用するセキュリティトークンサービス (STS) からの次の情報が必要です。
- **STS URL**
ユーザーを認証するためのユーザー名とパスワードを受け入れて WS-Trust 1.3 プロトコルを理解する STS エンドポイント。STS が Microsoft の ADFS (Active Directory フェデレーションサービス) の場合、通常、この URL は次のようになります。
`https://youradfs.com/adfs/services/trust/13/usernamemixed`。
- **STS アプリケーション識別子**
STS 内の SharePoint サイトを識別する文字列。これは、依存パーティ ID、クライアント ID、スコープ、または領域とも呼ばれます。STS が Microsoft の ADFS の場合、この値を AD FS 管理コンソールの \[AD FS\] の下の **\[Trust Relationships (信頼関係)\]** > **\[Relying Party Trusts (証明書利用者信頼)\]** > (SharePoint サイトの証明書利用者プロパティ) > **\[Identifiers (識別子)\]** タブで見つけることができます。
STS アプリケーション識別子は、Web ブラウザーでサイト URL を開くことでアクセスする SharePoint サイトにログインして取得できます。サイトで複数の認証プロバイダーが設定されている場合、ドロップダウンメニューにいくつかのオプションが表示されます。STS のログインページにリダイレクトする、目的の STS を選択します。この時点で、Web ブラウザーのアドレスバーには、次のクエリパラメーターを含む URL が含まれます。
`wa=wsignin1.0&wtrealm=uri%3amule%3asp80`
パラメーター **wa** は、サインインが開始された場合に STS に伝えます。**wtrealm** には、STS アプリケーション識別子の URI エンコードされた値が含まれます。この例では、`uri%3amule%3asp80` は `uri:mule:sp80` です。エンコードされていない値は、コネクタの設定用のパラメーターです。
### [](#セキュリティトークン認証)セキュリティトークン認証
SAML セキュリティトークンを使用して、SharePoint にログインできます。POST 要求を介して XML 本文を提供することで、Studio の \[Security Token (セキュリティトークン)\] 項目に入力したセキュリティトークンを取得することができます。
セキュリティトークンを取得するには、次の XML 本文で `https://login.microsoftonline.com/extSTS.srf` に POST 要求を実行します。
```text
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
http://www.w3.org/2005/08/addressing/anonymous
https://login.microsoftonline.com/extSTS.srf
[username]
[password]
[endpoint]
http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey
http://schemas.xmlsoap.org/ws/2005/02/trust/Issue
urn:oasis:names:tc:SAML:1.0:assertion
```
この要求の応答の タグの間にセキュリティトークンが含まれます。
セキュリティトークンを取得したら、Studio でトークン値を指定します。

- Security token (セキュリティトークン): 対応するセキュリティトークンを入力します。
- Site URL (サイト URL): 対応するサイトの URL を入力します。
## [](#コネクタをインストールする)コネクタをインストールする
1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。
2. Anypoint Exchange で \[Login (ログイン)\] をクリックします。
3. コネクタを検索して **\[Install (インストール)\]** をクリックします。
4. 画面の指示に従ってコネクタをインストールします。
Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。
## [](#最初のフローを設定する)最初のフローを設定する
設定方法:
1. Anypoint Studio で、**\[File (ファイル)\]** > **\[New (新規)\]** > **\[Mule Project (Mule プロジェクト)\]** をクリックします。
2. **\[Project Name (プロジェクト名)\]** を指定して、**\[Finish (完了)\]** をクリックします。
3. **\[Global Elements (グローバル要素)\]** タブをクリックします。
4. **\[Create (作成)\]** をクリックします。
5. **\[Search (検索)\]** テキストボックスに**「sharepont」**と入力します。
6. **\[Microsoft SharePoint\]** をクリックして **\[OK\]** をクリックします。
7. 設定するグローバル種別を選択します。

8. レガシー接続:
1. **\[Username (ユーザー名)\]**、**\[Password (パスワード)\]**、および **\[Site URL (サイト URL)\]** を入力します。
2. 認証については、次のように設定します。
- 自己署名 SSL 証明書を使用する場合、**\[Disable SSL certificate validation (SSL 証明書検証の無効化)\]** チェックボックスをクリックします。
- クレーム認証を使用して接続するには、STS URL (セキュリティトークンサービス) とスコープ (依存パーティ ID) を入力します。 STS URL は、認証ログイン情報としてユーザー名とパスワードを受け入れて WS-Trust 1.3 標準を理解する STS のエンドポイントを参照する必要があります。通常、ADFS ではエンドポイントは `https://myadfs.com/adfs/services/trust/13/usernamemixed` になります。また、エンドポイントを ADFS で有効にする必要があります (デフォルトでは有効)。
- NTLM 認証を使用して接続するには、**\[Domain (ドメイン)\]** を入力します。
- SharePoint Online に接続するには、NTLM とクレームの入力を空のままにします。**\[Username (ユーザー名)\]**、**\[Password (パスワード)\]**、および **\[Site URL (サイト URL)\]** のみを入力します。
3. **\[Test Connection (接続をテスト)\]** をクリックして、正しく接続されることを確認します。

もう一方の接続種別にも同様の情報が必要です。
**注意**: \[Pooling Profile (プーリングプロファイル)\]、\[Reconnection (再接続)\]、および \[Notes (メモ)\] タブは無視できます。これらは Studio によって提供され、デフォルト情報を含みます。
### [](#anypoint-studio-フローの作成)Anypoint Studio フローの作成
Anypoint Studio フローを作成する手順は、次のとおりです。
1. Anypoint Studio で、**\[File (ファイル)\]** > **\[New (新規)\]** > **\[Mule Project (Mule プロジェクト)\]** をクリックします。
2. **\[Project Name (プロジェクト名)\]** を指定して、**\[Finish (完了)\]** をクリックします。
3. 検索ボックスに**「http」**と入力し、**HTTP Connector** をキャンバスにドラッグします。
4. 検索ボックスに**「sharepoint」**と入力し、Microsoft SharePoint Connector インスタンスを HTTP Connector の横にドラッグします。
5. 検索ボックスに**「json」**と入力し、**\[Object to JSON\]** トランスフォーマーを Microsoft SharePoint Connector の横にドラッグします。

6. HTTP Connector をダブルクリックします。**\[Host (ホスト)\]** が**「localhost」**に設定され、**\[Port (ポート)\]** が**「8081」**に設定されていることを確認します。**\[Path (パス)\]** を **\[query (クエリ)\]** に設定します。**\[OK\]** をクリックします。
7. Microsoft SharePoint Connector をダブルクリックして、緑色のプラス記号をクリックします。
8. 次の設定値を更新します。
1. \[Connector Configuration (コネクタ設定)\] リストで、以前に作成した **Microsoft SharePoint** 設定をクリックします。
2. \[Operation (操作)\] リストから、**\[List query (リストクエリ)\]** をクリックします。
**注意**: **\[List query (リストクエリ)\]** オプションは、SharePoint インスタンスに正常に接続された後にのみ \[Operation (操作)\] リストに表示されます。
3. \[Language (言語)\] リストから、**\[DataSense Query Language (DataSense クエリ言語)\]** を選択します。
9. クエリビルダーをクリックします。
1. \[Types (種別)\] のリストから、**\[Documents (ドキュメント)\]** をクリックします。
2. \[Fields (項目)\] のリストから、**\[ID\]** と **\[Title (タイトル)\]** をクリックします。
3. \[Order By (並び替え基準)\] から、**\[Title (タイトル)\]** をクリックします。
4. \[Direction (方向)\] から、**\[DESCENDING (降順)\]** をクリックします。

## [](#フローの実行)フローの実行
1. Package Explorer で \[sharepoint2013-demo\] を右クリックし、**\[Run As (別のユーザーとして実行)\] > \[Mule Application (Mule アプリケーション)\]** を選択します。
2. アプリケーションの起動時にコンソールを確認します。エラーが発生していない場合、次のメッセージが表示されます。
```text
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'sharepoint2013-demo' +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
```
3. インターネットブラウザーを開いて [http://localhost:8081/query](http://localhost:8081/query) にアクセスします。
4. ドキュメントのリストがタイトルの降順で並び替えられ、JSON 形式で返されます (結果は SharePoint 2013 インスタンスに応じて異なります)。
```text
[{"__metadata":{"id":"Web/Lists(guid'2af685ae-5aec-4f60-b175-
54b21b6bd668')/Items(4)","uri":"https://ec2-54-200-49-206.us-west-
2.compute.amazonaws.com/_api/Web/Lists(guid'2af685ae-5aec-4f60-b175-
54b21b6bd668')/Items(4)","etag":"\"1\"","type":"SP.Data.Shared_x0020_Document
sItem"},"Id":4,"ID":4,"Title":"folder"}]
```
## [](#操作-リストおよびリスト項目の-api)操作: リストおよびリスト項目の API
リストおよびリスト項目の API を使用して、SharePoint リストおよびリスト項目を作成、取得、更新、削除します。
### [](#リスト項目の作成更新削除)リスト項目の作成、更新、削除
項目を作成または更新する場合、リスト ID を指定します。ID を指定すると、DataSense はリストのメタデータを取得し、入力可能な各項目がオブジェクトビルダーに表示されます。
```xml
```
または、コネクタ自体で属性を定義します。
```xml
```
リストの取得および削除には、リスト ID のみが必要です。
```xml
```

### [](#リスト項目のクエリ)リスト項目のクエリ
クエリビルダーを使用します。
左側のパネルには、非表示以外のすべてのリストが表示されます。右側のパネルには、選択したリストの項目が表示されます。項目が**参照項目**の場合、データ型は `SharepointListReference` または `SharepointListMultiValueReference` です。

このいずれかの項目をクエリで返すように選択している場合、**\[Retrieve full objects for reference fields (参照項目のすべてのオブジェクトを取得)\]** チェックボックスの値に応じて 2 つの種別の戻りオブジェクトを使用できます。
- オフ:
参照オブジェクトの ID と参照オブジェクトリストの ID を含む概要オブジェクト。
```json
{
"Title": "A title",
"LookupFieldId": {
"id": "1",
"lookupListId": "aaaa-1111-bbbb-2222"
},
"MultiValueLookupFieldId": {
"ids": [
1,
2,
3
],
"lookupListId": "cccc-3333-dddd-4444"
}
}
```
後でこのオブジェクトを別のコネクタで使用して、参照先のオブジェクトを for-each コンポーネントと共に取得できます。

- オン:
完全なオブジェクトグラフを取得します。サイクルがある場合は、概要参照オブジェクトが表示されます。
```json
{
"Title": "A title",
"LookupFieldId": {
"Title": "Another title",
"Id": "1",
"Property1": "A value"
},
"MultiValueLookupFieldId": [
{
"Title": "Another title",
"Id": "1",
"Property1": "A value"
},
{
"Title": "Another title",
"Id": "2",
"Property1": "A value"
}
]
}
```
**クエリテキスト**の例:

**注意**: このオプションをオンにすると、多くの参照項目がある大きな項目リストの取得に時間がかかることがあります。
このコネクタのバージョン 2.1.10 以降、(以下のような他のリストの操作に加えて) DSQL クエリで内部項目名またはタイトル項目名を使用できます。
たとえば、前述のクエリは次のようになります。
SELECT AuthorId, Created, List3MultiId FROM 8e306633-c600-40ab-80db-80f57968c0a1
各タイトルが次の \[Author (作成者)\]、\[Date Created (作成日)\]、および \[Details (詳細)\] の場合、項目名を使用してクエリを記述できます。
SELECT Author, 'Date created', Details FROM Inventory
内部項目名とタイトル項目名を混在させることもできます。
SELECT AuthorId, 'Date created', List3MultiId FROM Inventory
内部項目名とタイトル項目名は、次の場合にのみ次のリスト操作で使用できます。
- 新しい項目をリストに追加する
- リスト内の既存の項目を更新する
- リスト内の項目を照会する
**注意:** DSQL 句で検索条件を指定する場合、日時データ型で絞り込むには、ISO-8601 形式を使用して値を記述します (例: \[Created (作成日)\] > 「2000-01-01T00:00:00-03:00」)。
## [](#操作-ファイルおよびフォルダーの-api)操作: ファイルおよびフォルダーの API
ファイルとフォルダーの API を使用すると、ファイルとフォルダーの作成、取得、更新、削除のほか、ファイルのチェックイン、チェックアウト、パブリッシュ、承認、拒否、コピー、リサイクルをドキュメントリストから行うことができます。
フォルダー操作を使用する場合、サーバーの相対 URL は、フォルダーが存在する場所を参照します。URL の形式は、/site/docList/innerFolder または docList/innerFolder にすることができます。後者の場合、コネクタの設定のサイト URL パラメーターで指定されたサイトが使用されます。
ファイル操作を使用する場合、ファイルサーバーの相対 URL は、フォルダーサーバーの相対 URL とファイル名 (/site/docList/innerFolder/filename または docList/innerFolder/filename) を参照します。
### [](#フォルダーの作成および削除)フォルダーの作成および削除
フォルダーを作成または削除するには、サーバーの相対 URL (フォルダーが存在する場所、またはフォルダーを作成する予定の場所) を指定することができます。
結果のフローは次のようになります。
```xml
```
### [](#ファイルの追加)ファイルの追加
ファイルをアップロードするには、物理ファイルを選択するか、入力ストリームをコネクタに渡すことができます。これにより、指定されたサーバーの相対 URL にファイルがアップロードされます。たとえば、次の入力ストリームを File Connector と共に使用して、ファイルをリストにアップロードできます。
次の入力ストリームを使用します。
```xml
```
大きなファイルをアップロードするには、SharePoint サーバーと IIS サーバーを設定する必要があります。
- サイトの SP 管理コンソールで **\[Maximum Upload Size (最大アップロードサイズ)\]** を 2047 MB (最大) に設定します。
- IIS サイトの **\[Connection Timeout (接続タイムアウト)\]** を高い値に設定します。
- (要求の絞り込みで) IIS アプリケーションの **\[Maximum Allowed Content Length (最大許容コンテンツ長)\]** を 2147483647 に設定します。
(コネクタが使用する) SharePoint REST API では、最大 2 GB のファイルのアップロードがサポートされます。大きなファイルを操作する場合は、ベストプラクティスとして、ファイルへのシステムのローカルパス (localFilePath パラメーターの値) を提供することをお勧めします。これは、コネクタを介してファイルをアップロードするための最も効果的な方法です。
### [](#ファイルのコンテンツの取得)ファイルのコンテンツの取得
ファイルのコンテンツがバイト配列として返されます。たとえば、次を File Connector の入力として使用して、リストからファイルをダウンロードできます。
```xml
```
### [](#ファイルおよびフォルダーのクエリ)ファイルおよびフォルダーのクエリ
この操作では、指定されたフォルダー以降で、指定された条件に一致するすべてのファイルとフォルダーが返されます。
クエリビルダーを使用します。
- 左側のパネルには、SharePoint インスタンスからのドキュメントリストが表示されます。選択したインスタンスを開始パスの一部として使用して、ファイルとフォルダーを照会します。
- 右側のパネルでは、すべてのドキュメントリストで同じ項目が表示されます。
- また、フォルダーパスの入力で内部フォルダーを指定して、開始パスとして使用することができます。
- 再帰チェックボックスを選択すると、開始パスのすべてのフォルダーでファイルとフォルダーが再帰的に検索されます。
クエリビルダーのオプションを設定する方法は次のとおりです。

例:
```text
sharepoint-2013:file-query config-ref="SharePoint_2013" query="dsql:SELECT Author,ModifiedBy,Name,ServerRelativeUrl FROM #[header:inbound:documentListName]" recursive="true" doc:name="SharePoint 2013"/>
```
### [](#その他のファイル操作)その他のファイル操作
Approve、Check In、Check Out、Deny、Publish、Undo Checkout、Unpublish の各操作の使用方法はほぼ同じです。ファイルの URL を指定します。また、操作によっては、追加のコメントをパラメーターとして渡します。
```xml
```
### [](#ファイルのメタデータの設定)ファイルのメタデータの設定
**Update List Item** 操作を使用してドキュメントライブラリにアップロードしたファイルのメタデータを取得および設定できます。
リスト内のファイルのプロパティを設定するには、**\[List Item Id (リスト項目 ID)\]** を認識する必要があります。これは、遅延 **ListItemAllFields** プロパティを使用して取得できます。
次のフローは、**File Add** を **Update List Item** 操作に直接連結してリストにファイルをアップロードし、その直後にメタデータを設定する方法を示しています。
```xml
Test title
```
## [](#遅延プロパティの解決)遅延プロパティの解決
パフォーマンス上の理由で、多くの SharePoint 操作がエンティティの基本データセットとともに、1 つ以上の遅延プロパティ参照を返します。この遅延プロパティ参照を使用して追加の詳細や関連オブジェクトを取得できます。
汎用の **Resolve object** 操作または **Resolve collection** 操作を使用して、遅延プロパティセットを 1 つの `Map` または `List