フォルダのコピー
フォルダのコピー
フォルダのコピーを宛先フォルダ内に作成します。
元のフォルダは変更されません。
Box上でフォルダをコピーするには、コピー先となるparent
フォルダのid
をAPIに渡す必要があります。
cURL
curl -i -X POST "https://api.box.com/2.0/folders/4353455/copy" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"parent": {
"id": "345345"
}
}'
TypeScript Gen
await client.folders.copyFolder(folderOrigin.id, {
parent: { id: '0' } satisfies CopyFolderRequestBodyParentField,
name: copiedFolderName,
} satisfies CopyFolderRequestBody);
Python Gen
client.folders.copy_folder(
folder_origin.id, CopyFolderParent(id="0"), name=copied_folder_name
)
.NET Gen
await client.Folders.CopyFolderAsync(folderId: folderOrigin.Id, requestBody: new CopyFolderRequestBody(parent: new CopyFolderRequestBodyParentField(id: "0")) { Name = copiedFolderName });
Java
BoxFolder folder = new BoxFolder(api, "id1");
BoxFolder destination = new BoxFolder(api, "id2");
folder.copy(destination);
Python
folder_id = '22222'
destination_folder_id = '44444'
folder_to_copy = client.folder(folder_id)
destination_folder = client.folder(destination_folder_id)
folder_copy = folder_to_copy.copy(parent_folder=destination_folder)
print(f'Folder "{folder_copy.name}" has been copied into folder "{folder_copy.parent.name}"')
.NET
// Copy folder 11111 into folder 22222
var requestParams = new BoxFolderRequest()
{
Id = "11111",
Parent = new BoxRequestEntity()
{
Id = "22222"
}
};
BoxFolder folderCopy = await client.FoldersManager.CopyAsync(requestParams);
Node
client.folders.copy('11111', '22222')
.then(folderCopy => {
/* folderCopy -> {
type: 'folder',
id: '1234567',
sequence_id: '0',
etag: '0',
name: 'Pictures from 2017',
created_at: '2012-12-12T10:53:43-08:00',
modified_at: '2012-12-12T11:15:04-08:00',
description: 'Some pictures I took',
size: 629644,
path_collection:
{ total_count: 1,
entries:
[ { type: 'folder',
id: '0',
sequence_id: null,
etag: null,
name: 'All Files' },
{ type: 'folder',
id: '22222',
sequence_id: '3',
etag: '3',
name: 'Archives' } ] },
created_by:
{ type: 'user',
id: '22222',
name: 'Example User'
login: 'user@example.com' },
modified_by:
{ type: 'user',
id: '22222',
name: 'Example User',
login: 'user@example.com' },
owned_by:
{ type: 'user',
id: '22222',
name: 'Example User',
login: 'user@example.com' },
shared_link: null,
parent:
{ type: 'folder',
id: '22222',
sequence_id: '3',
etag: '3',
name: 'Archives' },
item_status: 'active',
item_collection:
{ total_count: 1,
entries:
[ { type: 'file',
id: '44444',
sequence_id: '0',
etag: '0',
sha1: '134b65991ed521fcfe4724b7d814ab8ded5185dc',
name: 'tigers.jpeg' } ],
offset: 0,
limit: 100 } }
*/
});
iOS
client.folders.copy(
folderId: "22222",
destinationFolderID: "12345"
) { (result: Result<Folder, BoxSDKError>) in
guard case let .success(folderCopy) = result else {
print("Error copying folder")
return
}
print("Copied folder \(folderCopy.name) to destination \(folderCopy.parent?.name)")
}
オプションで、新しいフォルダに別の名前を付けることもできます。
Node
client.folders.copy('12345', '0', {name: 'Renamed folder'})
.then(folderCopy => {
// ...
});
非同期コピー
コピーされるフォルダに含まれる項目が500個以下の場合は、APIコールと同時にコピーが実行されます。コールはコピー操作が完了するまで復帰しません。
コピー元のフォルダに500個を超える項目が含まれる場合は、非同期的にコピー操作が実行され、APIコールはコピー操作が完了していなくても直ちに復帰します。現時点では、コピー操作がいつ終了したのかを確認するAPIはありません。
フォルダのロック
この操作の進行中は、ファイルツリーの一部がロックされます。ロックされるのは、主に元のフォルダとその子孫フォルダ、および宛先フォルダです。
操作の進行中は、ロックされているどのフォルダに対しても、他の移動、コピー、削除、または復元操作を実行できません。最も重要な点は、同じフォルダをフォルダツリーの2つの異なる部分に同時にコピーすることはできないということです。
メタデータ
宛先フォルダのいずれかの親フォルダにメタデータカスケードポリシーが適用されている場合は、メタデータカスケード操作が非同期的に開始されます。
現時点では、この操作がいつ終了したのかを確認するAPIはありません。