如何解决有没有办法使用加载的服务帐户访问 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] 举报,一经查实,本站将立刻删除。