You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BigQuery API从Google Sheets创建外部表时遇403权限错误

403权限错误原因及解决思路

问题背景

手动创建Google Sheets表格后,在BigQuery控制台执行以下SQL可成功创建外部表:

CREATE OR REPLACE EXTERNAL TABLE `PROJECT.DATASET.TABLE`
OPTIONS (
  format = 'GOOGLE_SHEETS',
  uris = ['https://docs.google.com/spreadsheets/d/ID']
);

但通过BigQuery API调用相同SQL时(curl代码如下),收到403错误:

BQ_QUERY=$(cat <<EOF
CREATE OR REPLACE EXTERNAL TABLE \`PROJECT.DATASET.TABLE\`
OPTIONS (
  format = 'GOOGLE_SHEETS',
  uris = ['https://docs.google.com/spreadsheets/d/ID']
);
EOF
)

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token --account=MY_EMAIL_ADDRESS)" \
-H "Content-Type: application/json" \
-d "{\"query\": \"$BQ_QUERY\", \"useLegacySql\": false}" \
"https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/queries" | jq

错误信息:

{
  "error": {
    "code": 403,
    "message": "Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.",
    "errors": [
      {
        "message": "Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.",
        "domain": "global",
        "reason": "accessDenied"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}

核心原因

出现该错误的关键是API调用使用的访问令牌缺少Google Drive相关权限范围:

  • BigQuery控制台执行操作时,会自动复用你的完整用户权限(包含Drive访问权限),无需额外配置。
  • 而通过gcloud auth print-access-token默认获取的令牌,仅包含BigQuery基础操作的权限范围,没有请求Drive API的访问权限。当BigQuery需要访问Drive资源(即Google Sheets)时,无法通过该令牌获取合法的Drive访问凭证,因此触发403拒绝。

解决办法

需要显式指定包含Drive权限的范围重新获取访问令牌,修改后的命令如下:

# 获取包含BigQuery和只读Drive权限的令牌
ACCESS_TOKEN=$(gcloud auth print-access-token --account=MY_EMAIL_ADDRESS --scope=https://www.googleapis.com/auth/bigquery,https://www.googleapis.com/auth/drive.readonly)

# 使用新令牌执行API请求
curl -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"query\": \"$BQ_QUERY\", \"useLegacySql\": false}" \
"https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/queries" | jq

内容的提问来源于stack exchange,提问作者Maths noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:46:06