Microsoft Search API を使用して OneDrive と SharePoint のコンテンツを検索する
Microsoft Graph の Microsoft Search API を使用して、OneDrive または SharePoint に格納されているコンテンツ (ファイル、フォルダー、リスト、リスト アイテム、またはサイト) を検索します。
注意
検索 API スキーマがベータ版で変更されました。 検索要求と応答の一部のプロパティの名前が変更または削除されました。 詳細については、「 スキーマ変更の非推奨の警告」を参照してください。 このトピックの例では、最新のスキーマを示します。
Search API では、searchRequest で entityTypes プロパティを指定することで、OneDrive または SharePoint で取得するコンテンツの種類のスコープを設定できます。 この記事では、いくつかの例について説明します。
例 1: 検索ファイル
要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
応答
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
}
]
}
]
}
]
}
例 2: リスト 項目を検索する
要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
応答
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/Lists/Issue tracker list/DispForm.aspx?ID=1",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"sharepointIds":{
"listId":"da61a2b0-4120-4a3f-812b-0fc0d79bf16b"
},
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
}
}
}
]
}
]
}
]
}
例 3: サイトを検索する
要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"site"
],
"query": {
"queryString": "contoso"
}
}
]
}
応答
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.site",
"id": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"createdDateTime": "2019-06-10T06:37:43Z",
"description": "Contoso Communication Site",
"lastModifiedDateTime": "2020-08-30T06:41:56Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/"
}
}
]
}
]
}
]
}
例 4: OneDrive と SharePoint のすべてのコンテンツを検索する
次の使用例は、サインインしているユーザーが読み取りアクセス権を持つ OneDrive サイトと SharePoint サイト内のすべてのコンテンツに対してクエリを実行します。 応答の リソース プロパティは、ファイルとフォルダーである一致を driveItem オブジェクトとして返し、コンテナー (SharePoint リスト) が リストとして一致し、その他すべての一致が listItem として返されます。
要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem", "listItem", "list"
],
"query": {
"queryString": "contoso"
}
}
]
}
応答
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
},
{
"@odata.type": "#microsoft.graph.searchHit",
"hitId": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "Contoso - Documents",
"id": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"description": "",
"lastModifiedDateTime": "2020-07-08T18:17:59+00:00",
"name": "Shared Documents",
"parentReference": {
"siteId": "microsoft.sharepoint-df.com,220fd155-0ea2-477c-a816-5c08fdc45f5d,fad16ab6-0736-4fbc-a053-087296b47c99"
},
"webUrl": "https://microsoft.sharepoint-df.com/teams/spoppe/collab/TaskBoard/Contoso/Shared Documents/Forms/AllItems.aspx"
}
}
]
}
]
}
]
}
例 5: 検索クエリでフィルターを使用する
OneDrive と SharePoint のクエリの検索用語で KQL を使用できます。 例:
-
"query": "contoso filetype:docx OR filetype:doc"
では、クエリを Word 文書にスコープ指定します。 -
"query": "test path:\"https://contoso.sharepoint.com/sites/Team Site/Documents/Project\""
は、サイト内の特定のフォルダーにクエリをスコープします。 -
"query": "contoso AND isDocument=true"
は、ドキュメントのみを返すようにクエリのスコープを設定します。 コンテナー (フォルダー、ドキュメント ライブラリ) は返されません。 -
"query": "contoso contentclass:STS_List_Events"
は、クエリを SharePoint に格納されている予定表イベントにスコープを設定します。 -
"query": "contoso (LastModifiedTime > 2021-02-01 AND Created > 2021-02-01)"
は、SharePoint および OneDrive 項目を日付でフィルター処理するクエリのスコープを設定します。
有効にするには、プロパティ制限で条件に有効なクエリ可能な管理プロパティ名を指定する必要があります。
例 6: select プロパティを指定する
listItem のフィールド サブプロパティの一部として、または応答の searchHit オブジェクトの driveItem 内の内部 listItem サブプロパティの一部として、応答に戻すフィールドを指定できます。 これは、ネットワーク経由で応答をトリミングするか、すぐに使用できるスキーマに含まれていない特定のプロパティを要求する方法です。
SharePoint のカスタム プロパティのプロパティ選択は 、カスタム プロパティをサポートする Microsoft Graph の 2 つの SharePoint エンティティだけなので、 listItem または driveItem でのみ使用できます。
listItem 要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"title",
"contentclass"
]
}
]
}
listItem 応答
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
},
"fields": {
"contentclass": "STS_ListItem_GenericList",
"title": "Contoso issue "
}
}
}
]
}
]
}
]
}
driveItem 要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"listId",
"author",
"title"
]
}
]
}
driveItem 応答
POST /search/query
Content-Type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "01YOWRGSD34TVVP25X7NAZAW3P2JRL7FWE",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"listItem": {
"@odata.type": "#microsoft.graph.listItem",
"fields": {
"listId": "3b6a49d3-6bea-4549-bed8-8b1c92a12345",
"author": "Robin",
"title": "Test Notebook"
},
"id": "57ebe47b-b7eb-41fb-905b-123452bf96c4"
}
}
}
],
"total": 371,
"moreResultsAvailable": true
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
例 7: 非表示のコンテンツを検索する
includeHiddenContent プロパティを使用して、アーカイブされたコンテンツや SharePoint Embedded などの非表示のコンテンツを検索結果に含めます。 既定では、このプロパティは に false
設定されているため、非表示のコンテンツが返されなくなります。
必要に応じて KQL を含めて、非表示コンテンツのクエリを特定のコンテンツ タイプにスコープを設定することもできます。 たとえば、SharePoint では、管理者はサイトをアーカイブ済みとしてマークできます。 非表示のコンテンツを使用できない場合、検索結果には関連する非表示のコンテンツのみが含まれます。他のエラーがない場合は、応答コードを 200 OK
返します。
次の例では、 queryTemplate を使用して KQL と includeHiddenContent プロパティを使用してクエリのスコープを設定し、非表示のコンテンツを含める方法を示します。 ContainerTypeId などのプロパティを使用して、SharePoint Embedded コンテンツに対するクエリのスコープを設定することもできます。 SharePoint Embedded のコンテナーの種類の詳細については、「 SharePoint 埋め込みコンテナーの種類」を参照してください。
要求
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "*",
"queryTemplate": "({searchTerms} AuthorOWSUSER:TestContoso)"
},
"sharePointOneDriveOptions": {
"includeHiddenContent": true
}
}
]
}
応答
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"rank": 2,
"summary": "<c0>STS</c0>_<c0>View</c0> <c0>MySiteDocumentLibrary</c0> <c0>domain</c0>_<c0>allow</c0>:<c0>ALL</c0><ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "TestContoso - Documents",
"id": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"createdBy": {
"user": {
"displayName": "System Account"
}
},
"lastModifiedDateTime": "2024-03-08T18:06:33Z",
"name": "Documents",
"parentReference": {
"siteId": "contoso-my.sharepoint.com,44776ebc-4ddc-4f7e-afb8-b706c77e0883,a118ff93-1105-40b9-bed0-2cd07cd4b2a4"
},
"webUrl": "https://contoso-my.sharepoint.com/personal/contoso_onmicrosoft_com/Documents/Forms/All.aspx"
}
}
],
"total": 1,
"moreResultsAvailable": false
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
既知の制限
ドライブを検索するときは、ドキュメント ライブラリの名前に含まれる用語を queryString に含める必要があります。
*
クエリはサポートされておらず、使用可能なすべてのドライブが返されるわけではありません。検索 API では、サイト レベルの 検索スキーマはサポートされていません。 テナント レベルまたは既定の 検索スキーマを使用します。
includeHiddenContent プロパティは、委任されたアクセス許可を持つシナリオでのみ機能します。 includeHiddenContent プロパティが自動的に に
false
設定されるアプリケーションのアクセス許可には適用されません。