微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法使用加载的服务帐户访问 Cloud Run 中的 Google 表格?

如何解决有没有办法使用加载的服务帐户访问 Cloud Run 中的 Google 表格?

我目前正在寻找一种从 GCP Cloud Run 实例中的 Python 工作表读取数据的方法。在部署实例期间加载了一个服务帐户(我共享了工作表),我想知道是否可以直接使用此服务帐户而不加载其密钥,因为该实例已经在使用该帐户。

如果您对如何操作有任何想法,我会很高兴。 谢谢

解决方法

服务帐户是电子邮件,就像任何用户帐户一样。如果您需要访问用户 Google Sheet 文档以对数据执行一些处理,您只需与服务帐户电子邮件共享该工作表即可。如果您还想更新工作表,请将其放在“查看器”中进行只读或放在“编辑器”中。

然后在您的代码中,您需要使用 Cloud Run 服务帐户(不是您身边的密钥)创建凭证。这里的重要部分是正确确定凭据范围。

然后你就可以使用Sheet API在文档的时候进行交互了。

    from googleapiclient.discovery import build
    import google.auth

    SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly','https://www.googleapis.com/auth/cloud-platform']

    default_credentials,project_id = google.auth.default(scopes=SCOPES)
    # The ID and range of a sample spreadsheet.
    SAMPLE_SPREADSHEET_ID = 'YOUR DOCUMENT ID'
    SAMPLE_RANGE_NAME = 'A1:C1'

    service = build('sheets','v4',credentials=default_credentials)

    sheet = service.spreadsheets()
    result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,range=SAMPLE_RANGE_NAME).execute()
    values = result.get('values',[])

    to_ret = "Result \n"

    if not values:
        to_ret += "\n" + 'No data found.'
        print('No data found.')
    else:
        to_ret += "\n" + 'Results:'
        print('Results:')
        for row in values:
            to_ret += "\n" + row[0]
            print(row)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。