我正在尝试构建一个Web UI,供用户浏览他/她的Google云端硬盘,然后选择一个或多个文档,以便稍后在数据库的网站中引用.我目前正在使用.NET构建Web界面.我面临的问题是我找不到一个函数来获取文件夹Id的文件列表.我试过用:
... www.googleapis.com/drive/v2/files/BB0CHANGEDIDF5waGdzbUQ5aWs/children
...但是这只会提供文件夹中文件的文件引用ID(所谓的子资源项),这意味着我必须遍历这些文件并为每个文件创建一个调用以获取所有元数据我需要我的UI.不幸..
... www.googleapis.com/drive/v2/files
..将按文件夹列出我的所有文件,没有过滤选项.我想知道是否有一种有效的方法可以从一次调用驱动器服务器中为特定文件夹提取文件夹和文件列表.
我也试过这个(基于对类似问题的回答):我正在使用Fiddler直接调用api.当我用这个来打电话`
... www.googleapis.com/drive/v2/files?q='BB0CHANGEDIDF5waGdzbUQ5aWs'
我收到一个错误:
{
"error": {
"errors": [
{wrongID
"domain": "global",
"reason": "invalid",
"message": "Invalid Value",
"locationType": "parameter",
"location": "q"
}
],
"code": 400,
"message": "Invalid Value"
}
}
Run Code Online (Sandbox Code Playgroud)
即使使用谷歌的测试页也不行.看起来"文件"端点不接受任何参数.
必须有一种方法来实现这一目标!
谢谢您的帮助
我正在尝试构建一个Web UI,供用户浏览他/她的Google云端硬盘,然后选择一个或多个文档,以便稍后在数据库的网站中引用.我目前正在使用PHP构建Web界面.
我面临的问题是我找不到一个函数来获取文件夹Id的文件列表.
我试过用:
$service->children->listChildren($rootFolderId)
Run Code Online (Sandbox Code Playgroud)
...但是这只会提供文件夹中文件的文件引用ID(所谓的子资源项),这意味着我必须遍历这些文件并为每个文件创建一个调用以获取所有元数据我需要我的UI.
不幸..
$service->files->list()
Run Code Online (Sandbox Code Playgroud)
..将按文件夹列出我的所有文件,没有过滤选项.
我想知道是否有一种有效的方法从单个调用驱动器服务器中提取文件夹文件列表.我实际上记得能够通过旧的Google DOC API执行此操作.
非常感谢您的帮助
我正在尝试获取在父目录下创建的所有文件。父目录有很多子目录,然后是这些目录中的文件。
parent
--- sub folder1
--- file1
--- file2
Run Code Online (Sandbox Code Playgroud)
目前,我正在获取子文件夹的所有 id 并构建一个查询,例如q: 'subfolder1id' in parents 或 'subfolder2id' in parents以查找文件列表。然后我分批发出这些。如果我有 100 个文件夹,我会针对 10 个批量大小发出 10 个搜索查询。
有没有更好的方法来使用 google drive rest api 查询文件,它可以通过一个查询获得所有文件?
由于 Drive API 配额、服务配额和脚本执行时间的限制,6 min将 Google Drive 文件操作拆分成块通常很重要。
我们可以用PropertiesService存储continuationToken为FolderIterator或FileIterator。这样我们就可以停止我们的脚本,并在下一次运行时从我们停止的地方继续。
// Logs the name of every file in the User's Drive
// this is useful as the script may take more that 5 minutes (max execution time)
var userProperties = PropertiesService.getUserProperties();
var continuationToken = userProperties.getProperty('CONTINUATION_TOKEN');
var start = new Date();
var end = new Date();
var maxTime = 1000*60*4.5; // Max safe time, 4.5 mins
if (continuationToken == …Run Code Online (Sandbox Code Playgroud) 我正在根据 Google Team Drive 文件的内容实现一个基于树的查看器;为此,我遵循此处给出的建议:How do I search sub-folders and sub-sub-folders in Google Drive? ,即执行 2 个 API 调用 - 一个用于获取所有文件夹,另一个用于获取这些文件夹的直接子级的所有文件。
但是,我注意到获取所有文件夹的调用并未返回所有文件夹:
res = service.files().list(
corpora='teamDrive',
pageSize=1000,
supportsTeamDrives=True,
includeTeamDriveItems=True,
teamDriveId=TEAM_DRIVE_ID,
fields='files(id,parents,name,mimeType)',
q="mimeType='application/vnd.google-apps.folder' and trashed=false"
).execute()
len(res['files'])
# 460
Run Code Online (Sandbox Code Playgroud)
在这里,文件不应该超过pageSize,但我肯定从这个结果中丢失了大量文件夹,例如 id 为 的特定文件夹specified_id:
len([x for x in res['files'] if x['id'] == specified_id])
# 0
Run Code Online (Sandbox Code Playgroud)
我不认为这是权限问题,因为我可以正常获取此文件:
specific_file = service.files().get(
fileId=specified_id,
supportsTeamDrives=True,
).execute()
specific_file
{'id': '...',
'kind': 'drive#file',
'mimeType': 'application/vnd.google-apps.folder',
'name': '...',
'teamDriveId': '...'}
Run Code Online (Sandbox Code Playgroud)
为了实现在一个 API 请求中获取 Google(团队)云端硬盘中的所有文件夹的目标,有关尝试其他事情的任何其他提示将不胜感激。