Google 驱动器 API:如何在 C# 中更新文件的父级 属性?

Google Drive API: How to update Parents property of File in C#?

我正在尝试使用 C# google 驱动器 API.

将文件从一个文件夹复制到另一个文件夹

不幸的是,没有(我能找到的)在 C# 中执行此操作的文档:https://developers.google.com/drive/api/guides/folder

以下是我尝试过的几种方法:

Google.Apis.Drive.v3.Data.File file = _files.Where(x => x.Name == fileName).First();

_driveService.Files.Update(file, file.Id).AddParents = _destinationFolderId;

_driveService.Files.Update(file, file.Id).Execute();
Google.Apis.Drive.v3.Data.File file = _files.Where(x => x.Name == fileName).First();

file.Parents = new List<string> { _destinationFolderId  };

_driveService.Files.Update(file, file.Id).Execute();
Google.Apis.Drive.v3.Data.File file = _files.Where(x => x.Name == fileName).First();

_driveService.Files.Update(file, file.Id).Fields = "addParents";

_driveService.Files.Update(file, file.Id).Execute();

但是,所有这些都会引发错误:

服务驱动器抛出异常。 HttpStatusCode 被禁止。 parents 字段在更新请求中不可直接写入。请改用 addParents 和 removeParents 参数。

我看不到 addParentsremoveParents 参数,就像 python API:

file = drive_service.files().update(fileId=file_id,
                                    addParents=folder_id,
                                    removeParents=previous_parents,
                                    fields='id, parents').execute()

也许错误消息具有误导性/不正确?

更新方法遵循补丁方法。这意味着您只发送要更新的内容,而不发送其他字段。

然而,更新父项有点不同,它需要使用 AddParents 和 RemoveParents 方法。如果您实际上不想更改文件中的任何其他元数据,那么您只需为文件正文发送一个空值即可。

var updateRequest = service.Files.Update(null, fileId);
updateRequest.AddParents = folderId;
updateRequest.Execute();