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

通过AppScript运行BigQuery查询时的权限问题

解决BigQuery插入外部Sheet数据源时的Drive权限错误

问题核心

你遇到的Permission denied while getting Drive credentials错误,本质是BigQuery服务账号无权限访问外部表table_two对应的Google Sheet。尽管AppScript已添加Drive服务,但BigQuery执行查询时会使用自身的服务账号读取Drive中的Sheet数据,而非AppScript的运行账号。

解决步骤

  • 定位BigQuery默认服务账号
    打开Google Cloud控制台的BigQuery项目设置,找到默认服务账号,格式通常为[项目编号]@bigquery-cloud.google.com;也可在BigQuery控制台执行SELECT CURRENT_USER();,返回结果即为执行查询的服务账号。

  • 给服务账号授予Sheet访问权限
    打开table_two对应的Google Sheet,点击右上角「分享」,输入上述服务账号邮箱,授予查看者权限(仅需读取数据权限即可)。

  • 验证权限配置
    先在BigQuery控制台手动运行你的INSERT语句:

    insert into `project.table_one` select * from `project.table_two` where Date is not null;
    

    若能成功执行,说明权限配置生效,再回到Google Sheet的AppScript菜单执行操作。

  • 可选:调整AppScript查询请求
    若仍有问题,可在请求中指定使用当前用户身份运行查询(需确保该用户同时拥有BigQuery写入权限和目标Sheet读取权限),修改runQuery函数的request配置:

    const request = {
      query: 'insert into `project.table_one` select * from `project.table_two` where Date is not null;',
      useLegacySql: false,
      useUserCredentials: true // 新增:使用当前用户身份执行查询
    };
    

注意事项

  • 确认table_two的外部表定义中,数据源Sheet的共享设置已正确开放给BigQuery服务账号。
  • 使用useUserCredentials: true时,需保证运行AppScript的用户同时具备BigQuery写入权限和目标Sheet的读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:44:59