名前空間: microsoft.graph
子項目を含む driveItem のコピーを非同期的に作成します。 新しい親フォルダーを指定することも、新しい名前を指定することもできます。 要求が受け入れられると、操作はキューに入れられ、非同期的に処理されます。 操作が完了するまで進行状況を追跡するには、 モニター URL を 使用します。
重要
システム メタデータやカスタム メタデータなど、driveItem のコピー時にメタデータは保持されません。 代わりに、完全に新しい driveItem がターゲットの場所に作成されます。
driveItem のコピー時にアクセス許可は保持されません。 コピーされた driveItem は、コピー先フォルダーのアクセス許可を継承します。
ファイル バージョンは、 includeAllVersionHistory
パラメーターが明示的に true
に設定されている場合にのみ保持されます。 それ以外の場合は、最新バージョンのみがコピーされます。
コピー操作は 30,000 driveItems に制限されています。 詳細については、「 SharePoint の制限」を参照してください。
この 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
アクセス許可が必要です。 このアクセス許可は、前に説明した権限とは異なります。 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 コンシューマーではサポートされていません。
@microsoft.graph.conflictBehavior
パラメーターは、操作中にコピーされたすべての項目に適用されます。
replace
値はファイルでのみサポートされます。競合しているフォルダーでは、代わりにfail
動作が使用されます。
要求本文
要求本文で、次のパラメーターを含む JSON オブジェクトを指定します。
名前 | 値 | 説明 |
---|---|---|
parentReference | ItemReference | 省略可能。 コピーが作成される親アイテムへの参照。 |
name | string | 省略可能。 コピーの新しい名前。 この情報が指定されていない場合は、元の名前と同じ名前が使用されます。 |
childrenOnly | ブール値 | 省略可能。
true に設定すると、driveItem の子はコピーされますが、driveItem 自体はコピーされません。 既定値は false です。 フォルダー項目 でのみ 有効です。 |
includeAllVersionHistory | ブール値 | 省略可能。
true に設定されている場合、ソース ファイルのバージョン履歴 (メジャー バージョンとマイナー バージョンがある場合) は、ターゲット バージョン設定の制限内でコピー先にコピーする必要があります。
false 場合、最新のメジャー バージョンのみがコピー先にコピーされます。 既定値は false です。 |
注:
parentReference
パラメーターには、ターゲット フォルダーのdriveId
パラメーターとid
パラメーターを含める必要があります。
応答
応答は、要求を受け入れると、コピーの 進行状況を監視 する方法に関する詳細を返します。 応答は、コピー操作が受け入れられたか拒否されたかを示します 。たとえば、コピー先のファイル名が既に使用されている場合などです。
例
例 1: ファイルをフォルダーにコピーする
この例では、 {item-id}
で識別されたファイルを、その driveId
と id
値によって識別されるコピー先フォルダーにコピーする方法を示します。
コピーされたファイルには、新しい名前 contoso plan (copy).txt
が付けられます。
要求
POST https://graph.microsoft.com/v1.0/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
Location
ヘッダーの URL を使用して、非同期コピー操作の進行状況を監視します。
例 2: フォルダー内の子項目をコピーする
この例では、フォルダー自体ではなくフォルダーの内容のみを別のコピー先にコピーします。 ソース フォルダーは {item-id}
によって識別され、宛先は driveId
と id
値によって識別されます。
要求により、 childrenOnly
パラメーターが true に設定されます。これは、ソース項目がフォルダーの場合にのみ有効です。
要求
POST https://graph.microsoft.com/v1.0/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
応答の Location
フィールドには、コピー操作の進行状況をチェックするために使用できる監視 URL が含まれています。 コピー操作は非同期的に実行され、不特定の時間が経過すると完了する可能性があるため、この URL を繰り返し使用してその状態を追跡できます。
次の例のような状態レポートを受信するには、応答の [ Location
] フィールドの URL を取得します。
{
"@odata.context": "https://contoso.sharepoint.com/sites/site1/_api/v2.1/$metadata#drives('driveId')/operations/$entity",
"id": "049af13f-d177-4c70-aed0-eb6f04a5d88b",
"createdDateTime": "0001-01-01T00:00:00Z",
"lastActionDateTime": "0001-01-01T00:00:00Z",
"percentageComplete": 100,
"percentComplete": 100,
"resourceId": "016OGUCSF6Y2GOVW7725BZO354PWSELRRZ",
"resourceLocation": "https://contoso.sharepoint.com/sites/site2/_api/v2.0/drives/b!1YwGyNd6RUuVB42eCVw7ULlXybr_-09Br67iDGnYY-neBqwZd6jJRJbgCTx0On5n/items/016OGUCSF6Y2GOVW7725BZO354PWSELRRZ",
"status": "completed"
}
例 3: コピー先フォルダーの名前の競合が原因でコピーが失敗する
この例では、同じ名前のファイルが既に含まれているコピー先フォルダーにファイルをコピーしようとして失敗したことを示します。 要求では、競合を解決するための @microsoft.graph.conflictBehavior
クエリ パラメーターは指定されません。
競合動作は提供されないため、API は要求を受け入れますが、処理中に失敗します。 操作は、 nameAlreadyExists
エラーを返します。
このエラーを回避するには、 @microsoft.graph.conflictBehavior パラメーターを使用し、値 replace
または rename
します。
要求
POST https://graph.microsoft.com/v1.0/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
次の例は、最初の要求に対する応答の Location
フィールドの値の 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"
}
}
例 4: 同じ名前のファイルを含むフォルダーにファイルをコピーする
この例では、同じ名前のファイルが既に含まれているフォルダーにファイルをコピーする方法を示します。 要求では 、@microsoft.graph.conflictBehavior クエリ パラメーターを使用して、名前付けの競合を処理します。
パラメーターは replace
に設定され、ターゲット フォルダー内の既存の項目を上書きするように API に指示します。
@microsoft.graph.conflictBehavior
に使用できる値は次のとおりです。
-
replace
: 既存のファイルを置き換えます。 -
rename
: 新しいコピーの名前を変更します。 -
fail
: 名前付けの競合が存在する場合は、要求を失敗します。
要求
POST https://graph.microsoft.com/v1.0/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: を使用してフォルダーの競合が発生した子項目をコピーするときに要求が無効です conflictBehavior=replace
この例では、フォルダーの子項目のみをコピーしようとする失敗した要求を示します。 要求は、childrenOnly
パラメーターをtrue
に設定し、値が replace
の @microsoft.graph.conflictBehavior
クエリ パラメーターを使用します。
ソース フォルダー内の 1 つ以上の子項目はフォルダーです。 競合するアイテムがフォルダーの場合、 replace
動作はサポートされていないため、コピー操作は失敗します。 要求は受け入れられ、監視 URL が返されますが、最終的にはエラーが報告されます。
このエラーを回避するには、フォルダーを含む子アイテムをコピーするときにreplace
の代わりに、rename
またはfail
を使用します。
要求
POST https://graph.microsoft.com/v1.0/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"
},
"childrenOnly": true
}
応答
次の例は応答を示しています。
HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717
location ヘッダーのモニター URL にクエリを実行して、操作の状態を監視します。 失敗した操作は、次の例と同様の応答を返す場合があります。
{
"@odata.context": "https://contoso.sharepoint.com/sites/site2/_api/v2.1/$metadata#drives('driveId')/operations/$entity",
"id": "e410fb22-fc84-41df-ac9f-e95e5110a5cb",
"createdDateTime": "0001-01-01T00:00:00Z",
"lastActionDateTime": "0001-01-01T00:00:00Z",
"status": "failed",
"error": {
"message": "Errors occurred during copy/move operation.",
"details": [
{
"code": "nameAlreadyExists",
"message": "Name already exists"
},
{
"code": "nameAlreadyExists",
"message": "Name already exists"
},
{
"code": "nameAlreadyExists",
"message": "Name already exists",
"target": "01E4CGZM4FGUVRMKSJWBCLZQTWNFGHOTXG"
},
{
"code": "nameAlreadyExists",
"message": "Name already exists",
"target": "01E4CGZM2XRHETBOUOYVA2OKZFMGGBQ6VU"
}
]
}
}
例 6: 項目をコピーし、バージョン履歴を保持する
この例では、ファイル項目を新しい場所にコピーし、コピーした項目にそのバージョン履歴を含める方法を示します。
includeAllVersionHistory
パラメーターは、バージョン履歴を保持する必要があることを示すために、要求本文でtrue
に設定されます。
移行元ファイルのバージョンがコピー先サイトで許可されているよりも多い場合、すべてのバージョンが最初にコピーされ、バージョンが設定を超えたときの バージョン ストレージの動作 が適用されます。
要求
POST https://graph.microsoft.com/v1.0/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
非同期コピー操作の進行状況を監視するには、応答ヘッダーの Location
URL を使用します。
例 7: を指定せずにルート フォルダーをコピーするときに要求が無効です childrenOnly
この例では、{item-id}
として root
を指定してルート フォルダーのコピーを試行する失敗した要求を示します。 要求には、 childrenOnly
パラメーターは含まれません。 ルート フォルダー自体をコピーできず、 childrenOnly
が true に設定されていないため、要求は invalidRequest
エラーで拒否されます。
フォルダー自体をコピーせずにルート フォルダーの内容をコピーするには、 childrenOnly
パラメーターを true
に設定します。
要求
POST https://graph.microsoft.com/v1.0/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 に設定します。
例 8: ファイルの子項目をコピーするときに要求が無効です
この例では、ファイルであるソース項目のtrue
にchildrenOnly
パラメーターを設定する失敗した要求を示します。
childrenOnly
パラメーターは、フォルダー項目に対してのみ有効です。 ファイルには子項目が含まれていないため、要求は invalidRequest エラーで拒否されます。
要求
POST https://graph.microsoft.com/v1.0/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
この例では、 childrenOnly
パラメーターをフォルダーの子項目のみをコピーするように true
に設定し、新しい name
値も指定する失敗した要求を示します。 フォルダー自体がコピーされていないため、これら 2 つのパラメーターを一緒に使用することはできません。 要求は、 invalidRequest
エラーで拒否されます。
要求
POST https://graph.microsoft.com/v1.0/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""
}
}
}
例 10: 成功した子のコピーのみ
この例では、(フォルダー自体をコピーせずに) フォルダーの子項目を新しい宛先にコピーする方法を示します。 ソース フォルダーは {item-id}
によって識別され、コピー先フォルダーはその driveId
と id
を使用して指定されます。 要求は、 childrenOnly
プロパティを true
に設定します。これはフォルダー項目に対してのみ有効です。
要求
POST https://graph.microsoft.com/v1.0/me/drive/items/{item-id}/copy
Content-Type: application/json
{
"parentReference": {
"driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
"id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
},
"childrenOnly": true
}
応答
[場所 URL] を使用して、非同期コピー操作の状態を追跡します。 成功した応答は次のようになります。
HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/sites/FromSite/_api/v2.1/monitor/780293e6-07b3-4544-a126-fea909efcc84
[場所 URL] を使用して、非同期コピー操作の状態を追跡します。 成功した応答は次のようになります。
{
"@odata.context": "https://contoso.sharepoint.com/sites/FromSite/_api/v2.1/$metadata#drives('b!eUKtdpCU_kSVaTUFV6NpD-X6ybrlZ_5AgIz5YS9EUgU51UBlz4oFSauS0JyHnBdR')/operations/$entity",
"id": "780293e6-07b3-4544-a126-fea909efcc84",
"createdDateTime": "0001-01-01T00:00:00Z",
"lastActionDateTime": "0001-01-01T00:00:00Z",
"percentageComplete": 100,
"percentComplete": 100,
"resourceId": "01MXEZFVE5G2AS5Y74YZFYQF3KZAQ7CFEP",
"resourceLocation": "https://contoso.sharepoint.com/sites/ToSite/_api/v2.0/drives/b!JiheeiHiFEymg-TwftZJ-eX6ybrlZ_5AgIz5YS9EUgU51UBlz4oFSauS0JyHnBdR/items/01MXEZFVE5G2AS5Y74YZFYQF3KZAQ7CFEP",
"status": "completed"
}
関連コンテンツ
エラー情報については、「 エラー応答」を参照してください。