如何使用 Google 驱动器 API 获取父文件夹?
How do I get the parent folder using the Google Drive API?
我正在尝试编写一种方法来获取传入 Id
的文件夹的父文件夹。我尝试了许多不同的变体,其中大部分来自此处接受的答案,但每一个导致异常。
例如下面的代码...
public async Task<DriveFile> GetParentFolder(string folderId) {
FilesResource.ListRequest request = _service.Files.List();
request.Q = $"parents contains '{folderId}'";
request.Fields = "*";
FileList files = await request.ExecuteAsync();
return files.Files[0];
}
...引发以下异常...
Error: The service drive has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid Value [400]
Errors [
Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global]
]
我已经为 Q
和 Fields
属性尝试了很多值,但都导致了相同的异常。
我有其他代码使用 API,所以问题不是基本服务,我已经使用 API 获取一些文件夹的 ID,所以我知道我正在传递一个有效值。
其中一个问题是 API 的 v2 有一个 Parents
list, which looks like it does what I want, but this seems to be missing in v3。
有人能帮帮我吗?谢谢
你的做法是错误的,你不需要使用 file.list 你已经有了文件 ID,只需使用 file.get.
假设我有文件夹 ID。
{
"kind": "drive#file",
"id": "1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7",
"name": "Current Badges (2019-21)",
"mimeType": "application/vnd.google-apps.folder"
},
正如你在这个例子中看到的,我有 id 并且 mime 类型是一个文件夹。
我需要做的就是file.get
var request = _service.Files.Get("1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7");
request.Fields = "parents";
var response = request.Execute();
响应将包含一个名为 parents 的文件,它是文件夹的父级。
如您所见,您是否已经知道文件 ID,或者在本例中是文件夹 ID。然后你真的只需要使用 file.get 来获取关于那个 id 的所有信息。
真的没有理由使用file.list。
我正在尝试编写一种方法来获取传入 Id
的文件夹的父文件夹。我尝试了许多不同的变体,其中大部分来自此处接受的答案,但每一个导致异常。
例如下面的代码...
public async Task<DriveFile> GetParentFolder(string folderId) {
FilesResource.ListRequest request = _service.Files.List();
request.Q = $"parents contains '{folderId}'";
request.Fields = "*";
FileList files = await request.ExecuteAsync();
return files.Files[0];
}
...引发以下异常...
Error: The service drive has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid Value [400]
Errors [
Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global]
]
我已经为 Q
和 Fields
属性尝试了很多值,但都导致了相同的异常。
我有其他代码使用 API,所以问题不是基本服务,我已经使用 API 获取一些文件夹的 ID,所以我知道我正在传递一个有效值。
其中一个问题是 API 的 v2 有一个 Parents
list, which looks like it does what I want, but this seems to be missing in v3。
有人能帮帮我吗?谢谢
你的做法是错误的,你不需要使用 file.list 你已经有了文件 ID,只需使用 file.get.
假设我有文件夹 ID。
{
"kind": "drive#file",
"id": "1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7",
"name": "Current Badges (2019-21)",
"mimeType": "application/vnd.google-apps.folder"
},
正如你在这个例子中看到的,我有 id 并且 mime 类型是一个文件夹。
我需要做的就是file.get
var request = _service.Files.Get("1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7");
request.Fields = "parents";
var response = request.Execute();
响应将包含一个名为 parents 的文件,它是文件夹的父级。
如您所见,您是否已经知道文件 ID,或者在本例中是文件夹 ID。然后你真的只需要使用 file.get 来获取关于那个 id 的所有信息。
真的没有理由使用file.list。