从JSON文件在Google驱动器上生成文件的工具

drive-files-gen的Python项目详细描述


驱动文件生成器

从JSON文件在googledrive上生成文件夹和文档的工具。在

JSON文件树

JSON文件描述了要在googledrive上创建的文件树。在

一个例子可以帮助你理解它的结构。在

{"my-drive":{"docs":["My Google Docs"],"sheets":3,"folders":{"ZORRO":{"forms":1,"sites":["Google Site #1","Google Site #2"],"folders":{"my last folder":{}}}}}}
  1. outter对象必须有一个条目。键是要在其中创建文件树的文件夹的ID 或者使用特殊值my-drive,如果您希望它成为驱动器的根目录。共享驱动器ID也可以传递。在

  2. 在文件夹中,可以指定要创建的不同Google驱动器元素。来自 列表,或特殊的“文件夹”条目(如果要创建子文件夹)。在

  3. 文件夹由其名称(=JSON key)标识。根元素是my-drive或现有的 谷歌硬盘ID

  4. 要指定要创建哪些Google文档、工作表、站点(等等),您可以告诉您想要创建多少个 他们将有一个名称的时间戳("docs": 3将创建3个Google文档-目前不可能用于文件夹) 或者您可以指定一个名称列表("docs": ["one", "two", "three"])。在

  5. 如果您想创建一个空文件夹,只需添加一个带有空dict的条目("my last folder": {}

谷歌硬盘文件类型

以下是您可以创建的文件类型。左侧是您放入JSON文件中的内容, 右边是googledrive中对应的mime类型。在

^{pr2}$

证书

目前,该脚本没有打包,也没有作为应用程序发布。所以你必须创建自己的GCP Oauth 已安装应用程序(this procedure)的客户端ID。
下载JSON文件并将其传递到命令行。在

脚本将请求在googledrive中写入的许可。范围授权过程完成后,它 如果(且仅当)您已使用文件传递--store-creds,则将您的刷新令牌+访问令牌保存到文件中 命令行的路径。 否则每次跑步都会征求你的同意。在

运行脚本

usage: drive_files_gen.py [-h] [--store-creds STORE_CREDS] client_id_file json_file

Generate Google Drive folders and documents from a JSON file.

positional arguments:
  client_id_file        the client id JSON file, downloaded from GCP
  json_file             the Drive file tree, in JSON format

optional arguments:
  -h, --help            show this help message and exit
  --store-creds STORE_CREDS
                        if you want to store your creds (refresh + access token) on your filesystem, give it a file path

测试脚本

我用pytest做了一些单元测试。它需要同时具有JSON Oauth客户机文件和 一个有效的JSON凭据文件(带有刷新令牌+访问令牌)。 您将在test_main.py中看到我引用了一个test_config包,这是我存储JSON文件路径的地方。在

要测试它,只需运行pytest

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法解析方法   如何用相同的父标记和子标记在Java中解析XML?   日期使用Java中的时区偏移将本地时间转换为UTC   java如何在多进程、多线程环境中读取文件   WebView中的java弹出式对话框不在当前显示范围内,但在chrome浏览器中运行良好   只有2个参数的java递归二进制搜索方法   无法在java中调用函数   java JavaMail在Tomcat服务器上运行时停止工作   反射通过java程序生成、编译和运行java类   java Android:如何使ListView即使在应用程序关闭后仍保持禁用状态   在JAVA中识别匿名类实例   java渲染一个由三角形组成的立方体,在旋转时会产生奇怪的角度   函数式编程如何基于比较连续的列表元素将Java流减少为布尔值   java如何替换列表中的多个项目?   java Android如何获取随机sqlite数据?   java我已经将useSSL设置为false,但仍然收到警告   java使用动态变量生成jlabel   apachespark:java。lang.NoClassDefFoundError v2TableWithV1回退