Python 有没有办法从Google Vault导出下载导出的数据?

Python 有没有办法从Google Vault导出下载导出的数据?,python,google-api,google-workspace,google-vault-api,Python,Google Api,Google Workspace,Google Vault Api,从上的文档中,我已经能够创建、列出和检索导出,但我还没有找到任何方法下载与特定导出关联的导出数据。是否有任何方法可以通过API下载导出的文件,或者只能通过vault UI进行下载 导出元数据中有一个cloudStorageSink键,但尝试使用云存储API提供的值会导致一般权限问题(403错误) 导出元数据响应示例: { "status": "COMPLETED", "cloudStorageSink": { "files": [ {

从上的文档中,我已经能够创建、列出和检索导出,但我还没有找到任何方法下载与特定导出关联的导出数据。是否有任何方法可以通过API下载导出的文件,或者只能通过vault UI进行下载

导出元数据中有一个
cloudStorageSink
键,但尝试使用云存储API提供的值会导致一般权限问题(403错误)

导出元数据响应示例:

{
    "status": "COMPLETED",
    "cloudStorageSink": {
        "files": [
            {
                "md5Hash": "da5e3979864d71d1e3ac776b618dcf48",
                "bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
                "objectName": "a740999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd7886-fe02-432f-83c-a4b6fd4520a5/Test_Export-1.zip",
                "size": "37720"
            },
            {
                "md5Hash": "d345a812e15cdae3b6277a0806668808",
                "bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
                "objectName": "a507999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd6886-fb02-4c2f-813c-a4b6fd4520a5/Test_Export-metadata.xml",
                "size": "8943"
            },
            {
                "md5Hash": "21e91e1c60e6c07490faaae30f8154fd",
                "bucketName": "408d9135-6155-4a43-9d3c-424f124b9474",
                "objectName": "a503959b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd6786-fb02-42f-813c-a4b6fd4520a5/Test_Export-results-count.csv",
                "size": "26"
            }
        ]
    },
    "stats": {
        "sizeInBytes": "46689",
        "exportedArtifactCount": "7",
        "totalArtifactCount": "7"
    },
    "name": "Test Export",
    ...
}

创建所有导出后,您需要等待它们完成。您可以使用检查事件中每个导出的状态。在响应中,参考“exports”数组并检查每个数组的“status”值,可以下载任何表示“COMPLETED”的值

要下载完成的导出,请转到每个导出的“cloudStorageSink”对象,并获取“文件”数组中第一个条目的“bucketName”和“objectName”值。您需要使用云存储API和这两个值来下载文件。本页包含所有流行语言和使用API的代码示例


希望有帮助。

有两种方法可以完成您需要的操作:

第一个:
但是,使用OAuth 2.0刷新和访问密钥需要用户的干预,确认您的应用程序访问。 你可以在这里找到谷歌提供的一个不错的游乐场和更多信息:

  • 您首先需要选择所需的API(在您的情况下是:
    https://www.googleapis.com/auth/devstorage.full_controll
    云存储JSON API v1部分下
  • 然后,您需要使用管理员帐户登录并单击:“交换令牌的授权码”(字段“刷新令牌”和“访问令牌”将自动显示)
  • 最后,您需要选择正确的URL来执行请求。我建议使用“列出可能的操作”来选择正确的URL。您需要在云存储API v1下选择“获取对象-检索对象”(注意,有几个名为“获取对象”的选项),请确保选择云存储API v1下的一个,而不是云存储JSON API v1下的一个。现在只需在适当的占位符中输入bucket和对象名称,然后单击发送请求
  • 第二个:

    使用Google客户端库以编程方式下载它。这是作者建议的方法,但我认为Google提供的文档不足,因此没有真正的帮助。如果python示例有帮助,您可以在以下问题的答案中找到一个-

    您看到的问题是因为API工作正常用这个

    这意味着,由于您的目标是从导出中下载文件,因此您将获得仅下载文件的权限,而不是下载整个bucket(即使它仅包含这些文件)

    这就是为什么当您从存储桶请求信息时,会出现403错误(权限错误)。但是,确实有权下载存储桶中的文件。这样,您应该做的是,执行如下请求(使用有关问题的信息):

    GEThttps://storage.googleapis.com/storage/v1/b/408d9135-6155-4a43-9d3c-424f124b9474/o/a740999b-e11b-4af5-b8b1-6c6def35d677/exportly-41dd7886-fe02-432f-83c-a4b6fd4520a5/Test_Export-1.zip

    因此,简而言之,不是获取完整的存储桶,而是获取导出生成的每个文件


    希望这能有所帮助。

    我试图从谷歌存储中下载,但使用创建vault导出的同一服务帐户禁止访问此存储桶。你知道为什么会发生这种情况吗?