BigQuery API:从 Google Sheets 创建表

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

我手动创建了一个电子表格,其中包含一些数据。在bigquery控制台中,我可以这样做:

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

这就为我创建了一个包含电子表格中数据的表格。然而,当我使用大查询 API 尝试同样的事情时:

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"
  }
}

这是为什么?

google-sheets google-bigquery
1个回答
0
投票

是的,这显然是一个权限问题。错误消息“访问被拒绝:BigQuery BigQuery:获取云端硬盘凭据时权限被拒绝。”意味着用于您的 API 请求的 BigQuery 服务帐户没有访问您引用的 Google 表格所需的权限。另外,验证 BigQuery 服务帐户是否已作为“编辑者”添加到您的 Google 工作表中。

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