適用対象: 開発者
アプリで SharePoint Embedded コンテナーまたはコンテンツ間キーワード (keyword)検索する必要がある場合は、Microsoft Graph で Microsoft Search を使用します。 検索 API は、一致する結果をランク付けし、コンテナーのリソース drive 、またはファイルとフォルダーのリソース driveItem を返します。
注:
SharePoint Embedded 検索はプレビュー段階であり、Microsoft Graph /beta エンドポイントでのみ使用できます。コンテナーの v1.0 検索 API はありません。 Search では、委任されたアクセス許可のみがサポートされ、 例外的なアクセス パターンに従います。
検索範囲を選択する
すべての要求を、アプリに属するコンテナーの種類またはコンテナーにスコープを設定します。 検索はサインインしているユーザーのコンテキストで実行されるため、サービスはユーザーがアクセスできるコンテンツに結果をトリミングします。 返されたコンテナーまたはファイルを開く前に、アプリが対応するコンテナーの種類にアクセスできる必要もあります。
queryStringで次の管理プロパティを使用します。
| 範囲 | エンティティの種類 | クエリ パターン |
|---|---|---|
| 型のすべてのコンテナー | drive |
ContainerTypeId:{containerTypeId} |
| タイトルごとに 1 つのコンテナー | drive |
Title:'contoso' AND ContainerTypeId:{containerTypeId} |
| 説明による 1 つのコンテナー | drive |
Description:'Everything' AND ContainerTypeId:{containerTypeId} |
| 1 つのコンテナー内のFiles | driveItem |
Title:'contoso' AND ContainerId:{containerId} |
| コンテナーの種類間でのFiles | driveItem |
'contoso' AND ContainerTypeId:{containerTypeId} |
アプリケーションが Microsoft 365 コンテンツの検出可能性をオプトアウトした場合は、 sharePointOneDriveOptions.includeHiddenContent を要求本文の true に設定します。
コンテナーの検索
POST要求を Microsoft Graph 検索に送信し、リソースdrive要求します。
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": ["drive"],
"query": {
"queryString": "ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae"
},
"sharePointOneDriveOptions": {
"includeHiddenContent": true
},
"from": 0,
"size": 25
}
]
}
応答には hitsContainersが含まれます。 各ヒットには、hitId、rank、summary、@odata.typeが#microsoft.graph.driveするresourceが含まれます。
ファイルとフォルダーを検索する
ユーザーがファイル名またはファイル コンテンツを検索するときに、 driveItem リソースを要求します。 ユーザーがワークスペース内に既に存在する場合に ContainerId を持つ特定のコンテナーへのスコープ。
{
"requests": [
{
"entityTypes": ["driveItem"],
"query": {
"queryString": "Title:'contoso' AND ContainerId:b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0"
},
"sharePointOneDriveOptions": {
"includeHiddenContent": true
},
"from": 0,
"size": 25
}
]
}
driveItem結果には、id、name、size、createdDateTime、lastModifiedDateTime、parentReference、createdBy、lastModifiedBy、webUrlなどのファイル メタデータを含めることができます。
選択したフィールドを返し、結果を並べ替える
応答で特定の管理プロパティを要求するには、 fields コレクションを使用します。 並べ替え可能なプロパティでのみ sortProperties を使用します。
{
"requests": [
{
"entityTypes": ["driveItem"],
"query": { "queryString": "Everything about contoso" },
"sharePointOneDriveOptions": { "includeHiddenContent": true },
"fields": ["SampleOWSText", "id", "name", "parentReference", "webUrl", "createdDateTime", "lastModifiedDateTime", "size"],
"sortProperties": [
{ "name": "Created", "isDescending": false }
]
}
]
}
fromとsizeを使用して、ランク付けされた結果をページングします。
hitsContainers[].totalとhitsContainers[].moreResultsAvailableを読んで、別のページを要求するかどうかを決定します。
カスタム プロパティの検索
コンテナーのカスタム プロパティの場合は、クエリ文字列のカスタム プロパティ名に OWSTEXT を追加します。
customPropertyNametOWSTEXT:customPropertyValue AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae
ユーザーがフリーテキスト用語を入力し、コンテナー間で関連性のランク付けを行う場合は、フルテキスト 検索 (上記の /beta/search/query エンドポイント) を使用します。 アプリで関連性のランク付けなしで既知のメタデータ値をフィルター処理する必要がある場合は、検索の代わりに直接列挙を使用します。 たとえば、 $filter、 $expand、 $orderbyを使用してドライブ項目を照会します。
GET https://graph.microsoft.com/v1.0/drives/{container-id}/items?$filter=startswith(listitem/fields/{column}, '{value}')&$expand=listitem($expand=fields)
コンテナーに 5,000 を超える項目があり、 $orderbyで列挙する場合は、大きな順序付けされた列挙に必要な Prefer: HonorNonIndexedQueriesWarningMayFailRandomly ヘッダーを含めます。
既知の制限
Search では、アプリの承認ではなく、サインインしているユーザーのアクセス権が適用されます。 結果には、クエリに一致するユーザーがアクセスできるすべてのコンテナーとアイテムが含まれます。コンテナーの種類がアプリで使用が承認されていないコンテナーも含まれます。
queryStringにContainerTypeIdを常に含め、結果をアプリにスコープします。
検索によって返されるコンテナーまたはファイルを開くには、対応するコンテナーの種類に対するアクセス許可がアプリに必要です。