DriveItem を新しいフォルダーに移動する
[アーティクル]
09/13/2021
2 人の共同作成者
この記事の内容
名前空間: microsoft.graph
DriveItem を新しい親アイテムに移動する場合は、移動する DriveItem の parentReference をアプリで更新します。
これは、Update メソッドの特殊なケースです。
アプリでは、新しいコンテナーへのアイテムの移動と、アイテムの別のプロパティの更新を単一の要求に組み合わせることができます。
この要求を使用して、アイテムをドライブ 間で移動することはできません。
アクセス許可
この API を呼び出すには、次のいずれかのアクセス許可が必要です。アクセス許可の選択方法などの詳細については、「アクセス許可 」を参照してください。
アクセス許可の種類
アクセス許可 (特権の小さいものから大きいものへ)
委任 (職場または学校のアカウント)
Files.ReadWrite、Files.ReadWrite.All、Sites.ReadWrite.All
委任 (個人用 Microsoft アカウント)
Files.ReadWrite、Files.ReadWrite.All
アプリケーション
Files.ReadWrite.All、Sites.ReadWrite.All
HTTP 要求
PATCH /drives/{drive-id}/items/{item-id}
PATCH /groups/{group-id}/drive/items/{item-id}
PATCH /me/drive/items/{item-id}
PATCH /sites/{site-id}/drive/items/{item-id}
PATCH /users/{user-id}/drive/items/{item-id}
名前
種類
説明
if-match
String
この要求ヘッダーが含まれていて、指定された eTag (または cTag) がフォルダーの現在の eTag に一致しない場合には、412 Precondition Failed 応答が返されます。
要求本文
要求の本文内に、parentReference プロパティの新しい値を指定します。要求本文に含まれない既存のプロパティは、以前の値のままになるか、他のプロパティ値の変化に基づいて再計算されます。最適なパフォーマンスを得るためには、変更されていない既存の値を含めないでください。
注: ドライブのルートにアイテムを移動するときは、"id:" "root" 構文はアプリでは使用できません。
アプリは、親参照のためにルート フォルダーの実際の ID を提供する必要があります。
応答
成功した場合、このメソッドは 200 OK 応答コードと、応答本文で、更新された DriveItem リソースを返します。
例
この例では、{item-id} で指定したアイテムを、ID を持つユーザーのドライブの new-parent-folder-id フォルダーに移動します。
PATCH /me/drive/items/{item-id}
Content-type: application/json
{
"parentReference": {
"id": "{new-parent-folder-id}"
},
"name": "new-item-name.txt"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var driveItem = new DriveItem
{
ParentReference = new ItemReference
{
Id = "{new-parent-folder-id}"
},
Name = "new-item-name.txt"
};
await graphClient.Me.Drive.Items["{driveItem-id}"]
.Request()
.UpdateAsync(driveItem);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
const options = {
authProvider,
};
const client = Client.init(options);
const driveItem = {
parentReference: {
id: '{new-parent-folder-id}'
},
name: 'new-item-name.txt'
};
await client.api('/me/drive/items/{item-id}')
.update(driveItem);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/me/drive/items/{item-id}"]]];
[urlRequest setHTTPMethod:@"PATCH"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
MSGraphDriveItem *driveItem = [[MSGraphDriveItem alloc] init];
MSGraphItemReference *parentReference = [[MSGraphItemReference alloc] init];
[parentReference setId:@"{new-parent-folder-id}"];
[driveItem setParentReference:parentReference];
[driveItem setName:@"new-item-name.txt"];
NSError *error;
NSData *driveItemData = [driveItem getSerializedDataWithError:&error];
[urlRequest setHTTPBody:driveItemData];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
DriveItem driveItem = new DriveItem();
ItemReference parentReference = new ItemReference();
parentReference.id = "{new-parent-folder-id}";
driveItem.parentReference = parentReference;
driveItem.name = "new-item-name.txt";
graphClient.me().drive().items("{item-id}")
.buildRequest()
.patch(driveItem);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
応答
次の例は、この移動要求への応答を示しています。
HTTP/1.1 200 OK
Content-type: application/json
{
"id": "0123456789abc",
"name": "new-item-name.txt",
"parentReference":
{
"driveId": "11231001",
"path": "/drive/root:/Documents",
"id": "1231203102!1011"
}
}
エラー応答
エラーがどのように返されるかについては、「エラー応答 」を参照してください。