正确使用 Google Drive API v3 来检索文件的文件夹父 ID?
Correct usage of Google Drive API v3 to retrieve the folder parent(s) Id of a file?
场景
我正在尝试使用 Google Drive API v3 开发一个简单的程序,它必须能够列出存储在用户的 "drive",然后解释目录层次结构(这意味着:确定文件存储在哪个文件夹 name/id 中)。
问题
我遇到的问题是基本上 File.Parents
属性(理论上包含存储文件的文件夹的 ID)总是空的(nul) 在收到响应后,即使我确保在请求中指定 parents
值:
用 C# 编写的代码:
using Google.Apis.Drive.v3;
private DriveService client;
// ...
FilesResource.ListRequest request = this.client.Files.List();
request.PageSize = 100;
request.SupportsTeamDrives = false;
request.Fields = "nextPageToken, files(id, name, description, size,
trashed, shared, ownedByMe, isAppAuthorized,
createdTime, modifiedTime,
parents)";
FileList response = await request.ExecuteAsync();
原代码写在VB.NET:
Imports Google.Apis.Drive.v3
Private client As DriveService
' ...
Dim request As FilesResource.ListRequest = Me.client.Files.List()
With request
.PageSize = 100
.SupportsTeamDrives = False
.Fields = "nextPageToken, files(id, name, description, size,
trashed, shared, ownedByMe, isAppAuthorized,
createdTime, modifiedTime,
parents)"
End With
Dim response As FileList = Await request.ExecuteAsync()
此外,其他属性如 File.CreatedTime
和 File.ModifiedTime
也是 nul,我不明白为什么。 File.Id
或 File.Name
等其他属性按预期工作...很好。
问题
为什么 File.Parents
属性 为空,我该如何解决?。我想念做什么?
研究
{
"kind": "drive#file",
"id": string,
"name": string,
"mimeType": string,
"description": string,
"starred": boolean,
"trashed": boolean,
"explicitlyTrashed": boolean,
"trashingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"trashedTime": datetime,
"parents": [
string
],
"properties": {
(key): string
},
"appProperties": {
(key): string
},
"spaces": [
string
],
"version": long,
"webContentLink": string,
"webViewLink": string,
"iconLink": string,
"hasThumbnail": boolean,
"thumbnailLink": string,
"thumbnailVersion": long,
"viewedByMe": boolean,
"viewedByMeTime": datetime,
"createdTime": datetime,
"modifiedTime": datetime,
"modifiedByMeTime": datetime,
"modifiedByMe": boolean,
"sharedWithMeTime": datetime,
"sharingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"owners": [
{
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
}
],
"teamDriveId": string,
"lastModifyingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"shared": boolean,
"ownedByMe": boolean,
"capabilities": {
"canAddChildren": boolean,
"canChangeViewersCanCopyContent": boolean,
"canComment": boolean,
"canCopy": boolean,
"canDelete": boolean,
"canDownload": boolean,
"canEdit": boolean,
"canListChildren": boolean,
"canMoveItemIntoTeamDrive": boolean,
"canMoveTeamDriveItem": boolean,
"canReadRevisions": boolean,
"canReadTeamDrive": boolean,
"canRemoveChildren": boolean,
"canRename": boolean,
"canShare": boolean,
"canTrash": boolean,
"canUntrash": boolean
},
"viewersCanCopyContent": boolean,
"writersCanShare": boolean,
"permissions": [
permissions Resource
],
"hasAugmentedPermissions": boolean,
"folderColorRgb": string,
"originalFilename": string,
"fullFileExtension": string,
"fileExtension": string,
"md5Checksum": string,
"size": long,
"quotaBytesUsed": long,
"headRevisionId": string,
"contentHints": {
"thumbnail": {
"image": bytes,
"mimeType": string
},
"indexableText": string
},
"imageMediaMetadata": {
"width": integer,
"height": integer,
"rotation": integer,
"location": {
"latitude": double,
"longitude": double,
"altitude": double
},
"time": string,
"cameraMake": string,
"cameraModel": string,
"exposureTime": float,
"aperture": float,
"flashUsed": boolean,
"focalLength": float,
"isoSpeed": integer,
"meteringMode": string,
"sensor": string,
"exposureMode": string,
"colorSpace": string,
"whiteBalance": string,
"exposureBias": float,
"maxApertureValue": float,
"subjectDistance": integer,
"lens": string
},
"videoMediaMetadata": {
"width": integer,
"height": integer,
"durationMillis": long
},
"isAppAuthorized": boolean
}
尝试设置 fields=*
并从那里向后工作。 https://developers.google.com/drive/v3/web/performance#partial 中提到了通配符,尽管该页面看起来通常已过时。
场景
我正在尝试使用 Google Drive API v3 开发一个简单的程序,它必须能够列出存储在用户的 "drive",然后解释目录层次结构(这意味着:确定文件存储在哪个文件夹 name/id 中)。
问题
我遇到的问题是基本上 File.Parents
属性(理论上包含存储文件的文件夹的 ID)总是空的(nul) 在收到响应后,即使我确保在请求中指定 parents
值:
用 C# 编写的代码:
using Google.Apis.Drive.v3;
private DriveService client;
// ...
FilesResource.ListRequest request = this.client.Files.List();
request.PageSize = 100;
request.SupportsTeamDrives = false;
request.Fields = "nextPageToken, files(id, name, description, size,
trashed, shared, ownedByMe, isAppAuthorized,
createdTime, modifiedTime,
parents)";
FileList response = await request.ExecuteAsync();
原代码写在VB.NET:
Imports Google.Apis.Drive.v3
Private client As DriveService
' ...
Dim request As FilesResource.ListRequest = Me.client.Files.List()
With request
.PageSize = 100
.SupportsTeamDrives = False
.Fields = "nextPageToken, files(id, name, description, size,
trashed, shared, ownedByMe, isAppAuthorized,
createdTime, modifiedTime,
parents)"
End With
Dim response As FileList = Await request.ExecuteAsync()
此外,其他属性如 File.CreatedTime
和 File.ModifiedTime
也是 nul,我不明白为什么。 File.Id
或 File.Name
等其他属性按预期工作...很好。
问题
为什么 File.Parents
属性 为空,我该如何解决?。我想念做什么?
研究
{
"kind": "drive#file",
"id": string,
"name": string,
"mimeType": string,
"description": string,
"starred": boolean,
"trashed": boolean,
"explicitlyTrashed": boolean,
"trashingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"trashedTime": datetime,
"parents": [
string
],
"properties": {
(key): string
},
"appProperties": {
(key): string
},
"spaces": [
string
],
"version": long,
"webContentLink": string,
"webViewLink": string,
"iconLink": string,
"hasThumbnail": boolean,
"thumbnailLink": string,
"thumbnailVersion": long,
"viewedByMe": boolean,
"viewedByMeTime": datetime,
"createdTime": datetime,
"modifiedTime": datetime,
"modifiedByMeTime": datetime,
"modifiedByMe": boolean,
"sharedWithMeTime": datetime,
"sharingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"owners": [
{
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
}
],
"teamDriveId": string,
"lastModifyingUser": {
"kind": "drive#user",
"displayName": string,
"photoLink": string,
"me": boolean,
"permissionId": string,
"emailAddress": string
},
"shared": boolean,
"ownedByMe": boolean,
"capabilities": {
"canAddChildren": boolean,
"canChangeViewersCanCopyContent": boolean,
"canComment": boolean,
"canCopy": boolean,
"canDelete": boolean,
"canDownload": boolean,
"canEdit": boolean,
"canListChildren": boolean,
"canMoveItemIntoTeamDrive": boolean,
"canMoveTeamDriveItem": boolean,
"canReadRevisions": boolean,
"canReadTeamDrive": boolean,
"canRemoveChildren": boolean,
"canRename": boolean,
"canShare": boolean,
"canTrash": boolean,
"canUntrash": boolean
},
"viewersCanCopyContent": boolean,
"writersCanShare": boolean,
"permissions": [
permissions Resource
],
"hasAugmentedPermissions": boolean,
"folderColorRgb": string,
"originalFilename": string,
"fullFileExtension": string,
"fileExtension": string,
"md5Checksum": string,
"size": long,
"quotaBytesUsed": long,
"headRevisionId": string,
"contentHints": {
"thumbnail": {
"image": bytes,
"mimeType": string
},
"indexableText": string
},
"imageMediaMetadata": {
"width": integer,
"height": integer,
"rotation": integer,
"location": {
"latitude": double,
"longitude": double,
"altitude": double
},
"time": string,
"cameraMake": string,
"cameraModel": string,
"exposureTime": float,
"aperture": float,
"flashUsed": boolean,
"focalLength": float,
"isoSpeed": integer,
"meteringMode": string,
"sensor": string,
"exposureMode": string,
"colorSpace": string,
"whiteBalance": string,
"exposureBias": float,
"maxApertureValue": float,
"subjectDistance": integer,
"lens": string
},
"videoMediaMetadata": {
"width": integer,
"height": integer,
"durationMillis": long
},
"isAppAuthorized": boolean
}
尝试设置 fields=*
并从那里向后工作。 https://developers.google.com/drive/v3/web/performance#partial 中提到了通配符,尽管该页面看起来通常已过时。