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場合、最新のメジャー バージョンのみがコピー先にコピーされます。

注:

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

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

応答

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

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

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

要求

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} によって識別されるフォルダー内の子を、 driveIdid 値で識別されたフォルダーにコピーします。 置き換えるオプションのクエリ パラメーター @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} によって識別された項目を、 driveIdid 値で識別されたフォルダーにコピーします。 また、バージョン履歴がターゲット フォルダーにコピーされます。 ソース ファイルに 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: ルートからフォルダー内の子をコピーする

次の例では、 {item-id} (root とも呼ばれます) によって識別されるフォルダー内の子を、 driveIdid 値で識別されるフォルダーにコピーしようとしています。 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} によって識別されたフォルダー内の子を、 driveIdid 値で識別されたフォルダーにコピーしようとしています。 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} によって識別されたフォルダー内の子を、 driveIdid 値で識別されたフォルダーにコピーしようとしています。 {item-id}は、フォルダーではなくファイルを参照します。 childrenOnly パラメーターは true に設定されます。 {item-id}が非フォルダー driveItem であるため、要求は失敗します。

要求

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} によって識別されたフォルダー内の子を、 driveIdid 値で識別されたフォルダーにコピーしようとしています。 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""
    }
  }
}

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