如何通过服务帐户通过 Google BigQuery External Table 访问 Google Sheets Doc

Posted

技术标签:

【中文标题】如何通过服务帐户通过 Google BigQuery External Table 访问 Google Sheets Doc【英文标题】:How to access to Google Sheets Doc via Google BigQuery External Table via Service account 【发布时间】:2019-04-29 10:19:55 【问题描述】:

我有一个 BigQuery 表,其中引用了我的服务帐户无法访问的 Google 表格文档。目前获得

“错误:未找到:文件 /gdrive/id/xxxx”

我正在使用 NodeJs 3.0.0 客户端库来访问 BigQuery API。

服务用户帐户在 BigQuery 上拥有数据编辑器、作业用户和用户权限,并且我已将 Google 工作表明确共享给服务帐户。

为了清楚起见,用户帐户查询它有权访问的其他表没有问题,只是一堆这些外部表。

对我还需要做什么有什么想法吗?

【问题讨论】:

我相信这篇文章会有所帮助:***.com/questions/40391128/… 我正在将作用域 drive.readonly 作用域传递给 BigQuery 客户端:const bigquery = new BigQuery(scopes: ['https://www.googleapis.com/auth/bigquery', 'https://www.googleapis.com/auth/drive.readonly']); Drive API 在“项目 A”上启用,我也刚刚启用了对服务帐户的域范围委派,但没有一个这已经解决了这个问题。该帖子中的委派用户选项对于 NodeJs 客户端是不可能的(范围选项最近才被添加)。 【参考方案1】:

从一开始就回顾了这个问题,结果发现问题是由于 Google Doc 编辑器在组织级别被禁用。这会影响普通用户和服务帐户。还确保域范围的委派到位,从而解决了这个问题。

【讨论】:

以上是关于如何通过服务帐户通过 Google BigQuery External Table 访问 Google Sheets Doc的主要内容,如果未能解决你的问题,请参考以下文章

如何使用服务帐户密钥通过 ADF 连接到 Google 云存储

如何通过 terraform 使用服务帐户创建 google cloud pubsub pull 订阅?

如何通过 Google Drive .NET API v3 使用服务帐户访问 Team Drive

无法访问通过 Google 电子表格 API 通过服务帐户创建的工作表

如何通过 Google Drive 和 App Engine SDK 使用 Oauth2 服务帐户

如何使用服务帐户通过 .NET C# 访问 Google Analytics API V3?