允许服务帐户访问Google电子表格

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

我有一些谷歌电子表格,我想要对其进行预处理,以便将它们放入 AWS S3 存储桶中,这要归功于 python 脚本。

为了将我的Python脚本与Google API链接,我在Google Cloud Console上创建了一个项目,为此项目启用了Google Drive和Google电子表格API,并创建了一个具有该项目所有者权限的服务帐户。为了在我的 Python 脚本中使用 gspread 库并加载我的谷歌工作表数据。我已经拥有服务帐户的凭据 JSON,但我还需要将电子表格共享到我创建的服务帐户,但是当我尝试与我的服务帐户共享我的文件时,我总是收到以下错误:

The policy set by the administrators of <my organization> prohibits the sharing of items with <my-service-account-mail>, because it is not a Google Account in a compatible allowlisted domain. "

我已经尝试将服务帐户的域添加到我的组织允许列出的域中(通过 Google 管理控制台),或者为我的服务帐户添加域范围委托,但我仍然无法共享我的电子表格到此服务帐户。我发现的唯一方法是删除有关在我的组织之外共享文档的所有限制,但由于一些安全问题,我不想使用它。

这是我的 Python 代码,如果我尝试在不将文件共享到服务帐户的情况下运行它,则会弹出错误:

import gspread
import numpy as np
import pandas as pd 

gc = gspread.service_account()
sss = gc.open_by_key("<My spreadsheet ID>")
worksheet = sss.worksheet("<My sheet name>")

df = pd.DataFrame(worksheet.get_all_records())

我收到以下错误:

APIError: {'code': 403, 'message': 'The caller does not have permission', 'status': 'PERMISSION_DENIED'}

如果有人可以帮助我,这真的会拯救我的项目。

python google-api service-accounts
1个回答
0
投票

这是一个可能的解决方案。 如果您的组织自动将分类标签应用于内部创建的文件,这可能会限制外部对该文件的访问。由于将域列入允许/白名单似乎不适合您,请尝试从文件中删除任何限制性标签。根据您组织的安全设置,您可能需要向 Google 帐户管理员或系统管理员寻求帮助。

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