【问题标题】:Look up File ID in Google Drive given a file path (Ex: "MyDrive/Folder1/Folder2")在给定文件路径的情况下在 Google Drive 中查找文件 ID(例如:“MyDrive/Folder1/Folder2”)
【发布时间】:2016-01-07 00:58:43
【问题描述】:

我目前正在开发一个小程序,它可以在 Google Drive 中获取文件/文件夹路径(例如:'MyDrive/Folder1/Folder2/Folder3'),并对其进行一些操作(列出、上传、下载、复制等)

文件夹路径是用户(一个用户,又名我)输入的字符串。

按照 Google Drive API 的规定,大多数操作都需要文件/文件夹 ID,因此给定用户的文件路径,我需要找出文件/文件夹 ID。我想要的是找到文件/文件夹ID的有效方法。注意:在 Google Drive 中,每个文件都有 1 个 ID(字符串)和 1 个标题(例如:'folder3'、'folder1')。 ID 是唯一的。每个文件还有一个其父母 ID 的列表。

由于调用 Google Drive API 需要很长时间,我正在尝试限制 API 调用的数量。

现在,在我接受用户输入之前,(1) 我调用 service.files().list(),它会返回我 Google Drive 中所有文件的列表。 (2) 遍历列表构造3个字典:FileName-FileID、FileID-FileName、FileID-Parents。

鉴于用户输入:“MyDrive/Folder1/Folder2”,我可以: (1) 查找“Folder2”的 ID,然后查找其父母的 ID。 (2) 查找“Folder1”的 ID,然后查找其父母的 ID。检查“Folder1”的 ID 是否在“Folder2”的 ParentsID 中。 (3) 查找“MyDrive”的 ID。检查 MyDrive 的 ID 是否在“Folder1”的 ID 中。

检查后,我可以确保“Folder2”的 ID 是我要查找的 ID。

我的问题: 1,您能建议一种更好的方法来查找我的情况吗?

2,现在,我想我可以信任用户的输入,并且只查找 Folder2 的 ID。如果Folder2有超过1个父母,那么我会做上面的过程(遍历路径)。如果 Folder2 有 1 个父级,我停止检查。这是对用户的过度信任吗?

我对编程比较陌生,你能帮帮我吗?感谢您的宝贵时间和帮助!

【问题讨论】:

    标签: python google-drive-api google-drive-realtime-api


    【解决方案1】:

    这是一个很好的起点:

    path = 'sample_folder'
    folder_query = "title = '%s' and mimeType = '%s'" % (path,
                                                        "application/vnd.google-apps.folder")
    folder_list = drive_service.files().list(q=folder_query).execute()
    folder_id = folder_list['items'][0]['id']
    #(note: this just returns the first search result)
    

    如果路径中有多个文件夹,则需要拆分路径并遍历(例如,获取Folder1的folder_id,然后使用此id获取Folder2的folder_id等)

    【讨论】:

      【解决方案2】:

      我不确定它是否最好,但您可以尝试拆分文件夹路径(“myFolder/folder1/folder2/...”)并获取最后一项的File resource。资源文件将具有 parents[] 值(尽管我不知道它是否会包含其文件夹的父文件夹以及通向 My Drive 根目录)。

      您需要考虑的另一件事是优化响应以获得更快、更简洁的结果,您可以使用当前的实现来实现。

      尝试通过添加过滤器来优化files.list(您可以指定您只打算列出文件夹)。另一个项目是让您拥有partial responses。这可以通过指定fields 参数来完成。

      希望这会有所帮助!

      【讨论】:

      • 非常感谢 Adjuremods 的帮助。对此,我真的非常感激。你关于部分反应的 cmets 真的很有帮助。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-07-06
      • 1970-01-01
      • 2012-10-20
      相关资源
      最近更新 更多