次の方法で共有


driveItem: copy

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

新しい親項目の下または新しい名前を使用して 、driveItem (すべての子を含む) のコピーを非同期的に作成します。 要求が確認されると、キューに入ります。 サブ項目を含む実際のコピーは、未確定の時点で行われます。 進行状況は、進行状況を 監視して操作が完了するまで報告されます。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) Files.ReadWrite Files.ReadWrite.All、Sites.ReadWrite.All
委任 (個人用 Microsoft アカウント) Files.ReadWrite Files.ReadWrite.All
アプリケーション Files.ReadWrite.All Sites.ReadWrite.All

注:

SharePoint Embedded には、コンテナーの FileStorageContainer.Selected コンテンツにアクセスするためのアクセス許可が必要です。 このアクセス許可は、前に説明した権限とは異なります。 詳細については、「 SharePoint Embedded の認証と承認」を参照してください。 Microsoft Graph のアクセス許可に加えて、アプリには、この API を呼び出すために必要なコンテナーの種類レベルのアクセス許可またはアクセス許可が必要です。 詳細については、「 コンテナーの種類」を参照してください。 コンテナーの種類レベルのアクセス許可の詳細については、「 SharePoint Embedded 承認」を参照してください。

HTTP 要求

POST /drives/{driveId}/items/{itemId}/copy
POST /groups/{groupId}/drive/items/{itemId}/copy
POST /me/drive/items/{item-id}/copy
POST /sites/{siteId}/drive/items/{itemId}/copy
POST /users/{userId}/drive/items/{itemId}/copy

オプションのクエリ パラメーター

このメソッドは、競合が @microsoft.graph.conflictBehavior 発生した場合の動作をカスタマイズするためのクエリ パラメーターをサポートします。

説明
fail 既定の動作は、エラーを報告することです。
replace ターゲット サイトの既存のアイテムを上書きします。
rename アイテムの名前を変更します。

注:

パラメーターは conflictBehavior 、OneDrive コンシューマーではサポートされていません。

要求本文

要求本文で、次のパラメーターを含む JSON オブジェクトを指定します。

名前 説明
parentReference ItemReference 省略可能。 コピーが作成される親アイテムへの参照。
name string 省略可能。 コピーの新しい名前。 この情報が指定されていない場合は、元の名前と同じ名前が使用されます。
childrenOnly ブール値 省略可能。 に true設定すると、 driveItem の子はコピーされますが、 driveItem 自体はコピーされません。 既定値は false です。 フォルダー項目 でのみ 有効です。
includeAllVersionHistory ブール値 省略可能。 に設定した true場合、ソース ファイルのバージョン履歴 (メジャー バージョンとマイナー バージョンがある場合) は、ターゲット バージョン設定の制限内でコピー先にコピーする必要があります。 の場合 falseは、最新のメジャー バージョンのみがコピー先にコピーされます。 既定値は false です。

注:

パラメーターには parentReference 、ターゲット フォルダーの driveId パラメーターと id パラメーターを含める必要があります。

1 つの要求で、オプションによって childrenOnly 150 個の子項目がコピーされ、孫アイテムの場合は SharePoint の制限が適用されます。 詳細については、「SharePoint の制限事項」を参照してください。

応答

応答は、要求を受け入れると、コピーの 進行状況を監視 する方法に関する詳細を返します。 応答は、コピー操作が受け入れられたか拒否されたかを示します 。たとえば、コピー先のファイル名が既に使用されている場合などです。

例 1: ファイルをフォルダーにコピーする

次の例では、 によって{item-id}識別されたファイルを、 と id 値でdriveId識別されたフォルダーにコピーします。 ファイルの新しいコピーの名前 contoso plan (copy).txtは です。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt"
}

応答

次の例は応答を示しています。

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

例 2: フォルダー内の子をコピーする

次の例では、 によって{item-id}識別されるフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーします。 パラメーターは childrenOnly true に設定されます。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

応答

次の例は応答を示しています。

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

childrenOnly を使用したコピー操作は複数の操作にまたがって行われるため、監視が重要です。

例 3: 名前の競合があるフォルダー内の子をコピーする

次の例では、 によって{item-id}識別されたフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーしようとします。 変換先には、ソースで同じ名前が既に見つかりました。 操作は受け入れられますが、処理中にエラーが発生します。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

応答

次の例は応答を示しています。

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

モニター URL に従います。

{
  "id": "46cf980a-28e1-4623-b8d0-11fc5278efe6",
  "createdDateTime": "0001-01-01T00:00:00Z",
  "lastActionDateTime": "0001-01-01T00:00:00Z",
  "status": "failed",
  "error": {
    "code": "nameAlreadyExists",
    "message": "Name already exists"
  }
}

このエラーを解決するには、省略可能なクエリ パラメーター @microsoft.graph.conflictBehavior を使用します。

例 4: 名前競合設定 conflictBehavior を含むフォルダー内の子をコピーする

次の例では、 によって{item-id}識別されるフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーします。 省略可能なクエリ パラメーター @microsoft.graph.conflictBehavior は、 を置き換えるために設定されます。 使用可能な値: replacerenamefail。 変換先には、ソースで同じ名前が既に見つかりました。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy?@microsoft.graph.conflictBehavior=replace
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

応答

次の例は応答を示しています。

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

例 5: コピー操作でバージョン履歴を保持する

次の例では、 によって{item-id}識別された項目を、 と id の値でdriveId識別されたフォルダーにコピーします。 また、バージョン履歴がターゲット フォルダーにコピーされます。 ソース ファイルに 20 個のバージョンが含まれており、コピー先のバージョン制限設定が 10 の場合、コピー先サイトで許可されているバージョンの最大数のみが、最新のバージョンから転送されます。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "includeAllVersionHistory": true
}

応答

次の例は応答を示しています。

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

例 6: ルートからフォルダー内の子をコピーする

次の例では、 (root とも呼ばれます) で{item-id}識別されるフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーしようとします。 パラメーターが childrenOnly true に設定されていません。 コピー操作をルート フォルダーで実行できないため、要求は失敗します。

要求

POST https://graph.microsoft.com/beta/me/drive/items/root/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

応答

次の例は応答を示しています。

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 283

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot copy the root folder.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

このエラーを解決するには、 パラメーターを childrenOnly true に設定します。

例 7: ソースに 150 を超える直接子があるフォルダーに子をコピーする

次の例では、 によって{item-id}識別されたフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーしようとします。 パラメーターは childrenOnly true に設定されます。 によって {item-id} 識別されるドライブ項目には、150 を超える直接の子が含まれています。 制限は 150 個の直接子であるため、要求は失敗します。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

応答

次の例は応答を示しています。

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 341

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Direct child count limit exceeded. Cannot copy children only when there are more than 150 direct children.",
    "innerError":
    {
      "code": "directChildrenLimitExceeded",
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

このエラーを解決するには、ソース フォルダー構造を再構成して、150 個の子のみを含めます。

例 8: ソース項目がファイルである子をコピーする

次の例では、 によって{item-id}識別されたフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーしようとします。 は {item-id} 、フォルダーではなくファイルを参照します。 パラメーターは childrenOnly true に設定されます。 が非フォルダー driveItem であるため {item-id} 、要求は失敗します。

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

応答

次の例は応答を示しています。

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 290

{
  "error":
  {
    "code": "invalidRequest",
    "message": "childrenOnly option is not valid for file items.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

例 9: childrenOnly と name のフォルダー内の子をコピーする

次の例では、 によって{item-id}識別されたフォルダー内の子を、 と id の値でdriveId識別されたフォルダーにコピーしようとします。 パラメーターは childrenOnly true に設定され、値を指定します name 。 と を一緒に使用できないため、要求は失敗しますchildrenOnlyname

要求

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt",
  "childrenOnly": true
}

応答

次の例は応答を示しています。

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 285

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot use name parameter alongside childrenOnly.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

エラー情報については、「 エラー応答」を参照してください。