使用 Python 下载 Play Console 报告

问题描述 投票:0回答:2

我目前正在尝试使用 python 中的自动化脚本在播放控制台中导出我的报告。我已经关注了一些文档 https://support.google.com/googleplay/android-developer/answer/6135870?hl=en

我的代码最终是这样的:

cloud_storage_bucket = 'pubsite_prod_rev_XXXXXXXXXXXXXXXX'
report_to_download = 'reviews/reviews_id.co.sample.sample_202012.csv'

credentials = Credentials.from_service_account_file(json_file)

storage = build('storage', 'v1',  credentials=credentials)

print(storage.objects().get(bucket=cloud_storage_bucket,object=report_to_download).execute())

我得到了这个输出:

{'kind': 'storage#object', 
'id':'pubsite_prod_rev_16380265360184632708/reviews/reviews_id.co.acehardware.acerewards_202012.csv/1638300444416618', 
'selfLink':'https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_XXXXXXXXXX/o/reviews%2Freviews_id.co.acehardware.acerewards_202012.csv', 
'mediaLink':'https://storage.googleapis.com/download/storage/v1/b/pubsite_prod_rev_16380265360184632708/o/reviews%2Freviews_id.co.sample.sample.csv?generation=1638300444416618&alt=media', 
'name': 'reviews/reviews_id.co.sample.sample_202012.csv', 
'bucket': 'pubsite_prod_rev_XXXXXXXXXXXXXXXX', 
'generation': '1638300444416618', 
'metageneration': '1', 
'contentType': 'text/csv; charset=utf-16le', 
'storageClass': 'STANDARD', 
'size': '18842', 
'md5Hash': 'ywjrTfTj/TjFuVkeawlNj/fQ==', 
'contentEncoding': 'gzip', 
'crc32c': 'wpasdROSg==', 
'etag': 'COq0sadoeDowPQCEAE=', 
'timeCreated': '2021-11-30T19:27:24.488Z', 
'updated': '2021-11-30T19:27:24.488Z', 
'timeStorageClassUpdated': '2021-11-30T19:27:24.488Z'}

如何创建一些 csv 输出对象到本地存储或使用此输出保存到 StringIO 缓冲区?

python python-3.x download google-cloud-storage google-play-console
2个回答
0
投票

请参阅此文档,其中提供了示例Python代码以将对象下载到本地存储。

您感兴趣的代码片段是:

blob.download_to_filename(destination_file_name)


0
投票

根据我的经验,特别是下载 Google Play Console 报告时最好使用

gsutil
(尽管更多的 Python 方式不是调用某些外部进程,而是使用 API)。这更适合您的需求,因为它会立即将报告下载到您的本地存储。

此外,更重要的是,人们报告 很多使用 403 访问此类报告的问题案例

pubsite_prod_rev_X_***
- 它们未在您的 GCS 存储桶中列出,并且您无法正确更改访问它们所需的权限对于 API。但我发现
gsutil
在这种情况下起作用。这是一个代码示例:

    import os
    import pathlib
    import subprocess
    import shutil

    gsutil_path = shutil.which('gsutil')
    if not gsutil_path:
        # if gsutil isn't in PATH
        gsutil_path = shutil.which('gsutil',path=os.getenv('GSUTIL_PATH'))
    print(str(subprocess.check_output([
        gsutil_path,
        'cp',
        '-r',
        os.getenv('GOOGLE_STORAGE_REPORTS_URI'),
        pathlib.Path(__file__).parent.resolve()])))

© www.soinside.com 2019 - 2024. All rights reserved.