- You want to retrieve a folder tree from a file in own Google Drive.
- 您想要检索文件路径。因此,在您的情况下,它会检索每个文件和文件夹上方的父文件夹。
- 您希望使用 google-api-python-client 和 python 来实现此目的。
- 您已经能够使用 Drive API 获取文件元数据。
如果我的理解是正确的,那么这个示例脚本怎么样?不幸的是,在现阶段,Google API 无法直接检索文件的文件夹树。因此需要编写一个脚本来实现它。请将此视为多个答案之一。
示例脚本:
此示例脚本检索文件的文件夹树。使用此脚本时,请设置文件ID。
fileId = '###' # Please set the file ID here.
tree = [] # Result
file = globalShares.service.files().get(fileId=fileId, fields='id, name, parents').execute()
parent = file.get('parents')
if parent:
while True:
folder = service.files().get(
fileId=parent[0], fields='id, name, parents').execute()
parent = folder.get('parents')
if parent is None:
break
tree.append({'id': parent[0], 'name': folder.get('name')})
print(tree)
Result:
如果文件具有三层结构,则运行脚本时,将返回以下对象。
[
{
"id": "folderId3",
"name": "folderName3"
},
{
"id": "folderId2",
"name": "folderName2"
},
{
"id": "folderId1",
"name": "My Drive" # This is the root folder.
}
]
Note:
- 在此脚本中,从OP想要检索“文件路径”的情况来看,它假设每个文件只有一个父文件。在Google Drive的文件系统中,每个文件可以有多个父文件。如果在您的情况下,有多个文件具有多个父级,则此脚本返回数组的第一个元素
parents
。请小心这一点。这也被提到皮诺伊德的评论.
参考:
- 文件:获取
-
getfilelistpy
- 作为另一个示例,有一个用于从 Google Drive 检索文件夹树的库。