借助Google Workflow通过BigQuery查询Google Sheet遇权限问题求助
不是服务账号没有Google Sheet的访问权限,问题出在BigQuery访问Drive关联资源的特殊权限配置要求上,以下是具体排查和解决步骤:
启用Google Drive API
BigQuery访问Drive资源依赖Drive API,需先在你的GCP项目API库中启用该API。如果API未启用,BigQuery无法调用Drive接口获取访问凭证,直接触发权限错误。配置域范围授权(仅适用于Google Workspace域内资源)
如果你的Sheet属于Google Workspace域,必须通过Workspace管理员控制台给服务账号配置Drive API的域范围授权:- 进入Admin Console → 安全 → API控制 → 域范围委派
- 添加服务账号对应的客户端ID(可从GCP IAM服务账号详情页获取)
- 勾选所需的Drive权限(如
https://www.googleapis.com/auth/drive或drive.readonly,根据需求选择)
验证Sheet共享权限与外部表配置
确认服务账号邮箱<SA_ID>@<ProjectName>.iam.gserviceaccount.com已被添加为Sheet的编辑者,且邮箱无拼写错误;同时检查外部表创建语句中的googleDriveOptions配置是否正确,示例配置如下:CREATE OR REPLACE EXTERNAL TABLE `your-project.your-dataset.your-external-table` OPTIONS ( format = 'GOOGLE_SHEETS', uris = ['https://docs.google.com/spreadsheets/d/[你的Sheet ID]/edit'], skip_leading_rows = 1, google_drive_options = {skip_drive_removal_validation = FALSE} );明确权限边界:BigQuery管理员≠Drive权限
BigQuery管理员权限仅覆盖BigQuery内部资源操作,不会自动赋予Drive资源的访问权限,所以即使有该角色,仍需单独完成Drive相关的API启用和授权配置。
错误提示Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.的核心原因是BigQuery在尝试获取Drive访问凭证时失败,而非服务账号没有Sheet的直接访问权限,按上述步骤逐一排查即可解决。
内容的提问来源于stack exchange,提问作者RaptorX

