Python Google Drive API - 获取“我的云端硬盘”文件夹的 ID

2024-01-03

在 Python 3 中使用 Drive API。我正在尝试编写一个脚本来下载整个用户的 Google Drive。

此代码来自 Drive API V3 文档,经过修改以搜索文件夹而不是文件,将获取用户拥有所有权的每个文件夹,包括团队驱动器上的文件夹 - 尽管 files().list 的 API 文档说它没有2020 年 6 月 1 日之前不会

def GetFolderListFromGoogle(GDrive):
    page_token = None
    while True:
        response = GDrive.files().list(q="mimeType='application/vnd.google-apps.folder' and 'me' in owners and trashed = false",spaces='drive',fields='nextPageToken, files(id, name, mimeType, parents, sharingUser)',pageToken=page_token).execute()
        for file in response.get('files', []):
            # Process change
            print('Found file: %s  with id %s of type %s with parent %s and shared by is %s' % (file.get('name'), file.get('id'),file.get('mimeType'),file.get('parents'), file.get('sharingUser.displayName')))
        page_token = response.get('nextPageToken', None)
        if page_token is None:
            break
    print(response)
    return response

然后,我可以迭代结果以找到名为“我的云端硬盘”的文件夹,但是,坦率地说,仅获取文件夹列表就花费了太长的时间(有问题的用户从我们开始在团队云端硬盘上创建了大量文件夹)将我们的本地共享驱动器迁移到 Google)。

因此,为了解决这个问题,我尝试这样做:

def GetMyDriveFolderIDFromGoogle(GDrive):
    page_token = None
    while True:
        response = GDrive.files().list(q="name = 'My Drive'",spaces='drive',fields='nextPageToken, files(id, name, mimeType, parents, sharingUser)',pageToken=page_token).execute()
        for file in response.get('files', []):
            # Process change
            print('Found file: %s  with id %s' % (file.get('name'), file.get('id')))
            parent = file.get('parents')
            if parent:
                while True:
                    folder = GDrive.files().get(fileId=parent[0], fields='id, name, parents').execute()
                    print("ID: "+parent[0]+ " name: "+folder.get('name'))
                    parent = folder.get('parents')
                    if parent is None:
                        break
                    page_token = response.get('nextPageToken', None)
                    if page_token is None:
                        break

        break
    print(response)
    return response

除此之外,它什么也不返回。如果我然后进入我的测试帐户的 Google Drive,并在驱动器的根目录上创建一个名为“根文件夹”的文件夹,然后使用上面函数中的此查询来搜索它:

response = GDrive.files().list(q="mimeType='application/vnd.google-apps.folder' and name = 'Root Folder' and trashed = false",spaces='drive',fields='nextPageToken, files(id, name, mimeType, parents, sharingUser)',pageToken=page_token).execute()

当我查询我创建的“根文件夹”的父级时,它返回以下内容:

Found file: Root Folder  with id <ID OF TEST FOLDER HERE> of type application/vnd.google-apps.folder with parent ['<ID OF MY DRIVE FOLDER HERE>'] and shared by is None
ID: <ID OF MY DRIVE FOLDER HERE> name: My Drive

那么Drive API知道My Drive文件夹存在,它被命名为“My Drive”,有一个ID,并且可以获取它的ID,但只是不允许您直接访问它?

由于我无法保证每个用户都有任何文件夹,是否有更好的方法来获取“我的云端硬盘”文件夹的 ID?


目前正在使用 API v3:

driveid = service.files().get(fileId='root').execute()['id']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Google Drive API - 获取“我的云端硬盘”文件夹的 ID 的相关文章

随机推荐

  • 如何在 PHP 中生成多个数组中项目的所有组合

    我正在尝试查找多个数组中项目的所有组合 数组的数量是随机的 可以是 2 3 4 5 每个数组中的元素数量也是随机的 例如 我有 3 个数组 arrayA array A1 A2 A3 arrayB array B1 B2 B3 arrayC
  • R如何根据长格式data.frame列计算相对值?

    我有一个像这样的数据框 我想添加一列gene richness relative 在本专栏中 gene richness价值为days 0应设置为100 作为计算基础 其他日期的相对值应该反映变化 我从几天后排序的 data frame 开
  • R:如何对数据框中定义的不同时间段内的数据进行平均?

    假设我有一个数据框 data 其中包含测量变量 x 的时间序列数据 date x 2009 10 01 00 00 10 2009 10 01 01 00 11 2009 10 01 02 00 12 2009 10 01 03 00 13
  • Qt:没有为 Windows 发行版本生成地图/pdb 文件

    我的 Qt 4 7 4 项目文件在 Windows 发行版本下不会生成 map pdb 文件 因此 事后调试是不可能的 有任何标志可以改变这一点吗 将以下内容添加到 pro 文件中 QMAKE LFLAGS RELEASE MAP QMAK
  • 如何在 Lighttpd 中设置 cookieless 域?

    我想设置禁用 cookie 的域 以提供静态内容 那么就不要在您的域上设置 cookie 严重地 这就是你所要做的 只需使用子域 并确保您不会在该域的任何位置点击任何脚本解决方案 php python 等 另外 请确保您没有启用任何会导致
  • 在 Flutter 中实现推荐奖励

    我想在我的应用程序中建立一个推荐系统 以便用户可以通过电子邮件 电话号码等 以最简单的方式 邀请他们的朋友 当确认被邀请者安装了该应用程序时 它将奖励原始邀请比如说 发件人一个月没有横幅广告 我在网上能找到的唯一参考资料是这个 https
  • HttpMediaTypeNotAcceptableException:在异常处理程序中找不到可接受的表示

    我的控制器中有以下图像下载方法 Spring 4 1 RequestMapping value get image id fileName method RequestMethod GET public ResponseBody byte
  • Spring Boot 管理页面

    我试图了解如何在我的应用程序中使用 SBAP 因为它是一个非常方便的开发工具 我正在读他们的参考指南 http codecentric github io spring boot admin 1 3 2 getting started但我不
  • 如何使用 jQuery 或 CSS 自动调整(拉伸)div 高度和宽度

    我有 4 个 div id 为 A B C 和 D 如下所示 div div div div div div div div div div Div A 和 D 具有固定的宽度和高度 Div B 具有固定宽度 我想要自动计算 Div B 的
  • Pandas 过滤器计数

    我有一些数据按一秒间隔内的出现情况进行分组 我在寻找正确的方法来过滤掉低于特定阈值的计数时遇到问题 例如我不想显示计数低于 100 的任何内容 我尝试了各种版本的过滤器 lambda 构造 但我无法在调用 count 方法之前或之后进行过滤
  • 具有布尔值和多个参数的 python 多处理

    我有一个接受多个参数的函数 其中一些是布尔值 我正在尝试将其传递给多处理pool apply async并想要传递一些带有附加名称的参数 这是我正在使用的示例脚本 from multiprocessing import Pool def t
  • 如何将环境变量传递给docker-compose up

    我正在尝试运行一个容器 我已经将镜像上传到私有 Docker 注册表 我想编写一个撰写文件来下载和部署映像 但我想将标签名称作为变量从 docker compose run 命令传递 我的撰写文件如下所示 如何将 KB DB TAG VER
  • 是否可以升级 Angularjs 属性指令以在 Angular 4 中使用?

    我已经能够升级 AngularJS 元素指令以在 Angular 4 中使用 这是示例代码 myScores js angular module app components directives myScores directive my
  • PHP 上的无限循环的 Pthreads 与 Parallel

    我正在寻找一种在 PHP 上执行多线程的方法 并遇到了 pthreads PHP API 我认为它很容易实现 但是我必须找出如何安装支持 Debian 的 ZTS 的 PHP 版本 问题是 当我查看 pthreads php net 文档时
  • 查找8086微处理器中的物理地址

    在8086微处理器中 20位地址分为16位 4位地址 其中4位二进制是段地址 当我们将4位二进制转换为十六进制时 它会变成1位十六进制 我的问题是当我们遇到计算物理地址的问题时从逻辑地址上看 给出的是一个4bit的十六进制段地址 为什么会这
  • 如何验证 Perl 中的函数参数?

    你能告诉我 Perl 中验证函数参数最明智的方法是什么吗 代码片段 sub testfunction my args my value args gt value die no value set process value testfun
  • Redux 和 React Router:结合调度和导航 (history.push)

    我对如何使用 React Router 有点一无所知history push route with Redux 换句话说 如果你将一个组件与 Redux 的连接mapDispatchToProps 你怎么放history push rout
  • 为什么 Flowable 不是 Observable

    为什么 Flowable 不是 Observable Observable 接口几乎是 Flowable 的子集 它们的实现几乎相同 为什么他们不实现一个通用接口 以便我们可以直接将 Flowable 转换为 Observable 为什么
  • 正则表达式匹配由任何字符分组包围的可选组

    我正在尝试匹配一个可选组 该组前面和后面可以有任意数量的字符 整个模式也有必需的开始和结束匹配 但中间的匹配是可选的 我从这个开始 当需要中间组时它有效 string text blah blah foo This is a test bl
  • Python Google Drive API - 获取“我的云端硬盘”文件夹的 ID

    在 Python 3 中使用 Drive API 我正在尝试编写一个脚本来下载整个用户的 Google Drive 此代码来自 Drive API V3 文档 经过修改以搜索文件夹而不是文件 将获取用户拥有所有权的每个文件夹 包括团队驱动器