BigQuery AppsScript 客户端的默认范围不包括 Google Drive

Posted

技术标签:

【中文标题】BigQuery AppsScript 客户端的默认范围不包括 Google Drive【英文标题】:Default scopes for the BigQuery AppsScript Client don't include Google Drive 【发布时间】:2018-08-15 04:09:35 【问题描述】:

我一直在尝试通过 Apps 脚本中的 API 将云端硬盘文件(工作表)设置为 BigQuery 中的联合数据源。出于某种原因,从 UI 启用 Drive API 并没有真正起作用。我仍然会发现 Drive 范围丢失了。

任何想法都会非常有帮助。

【问题讨论】:

【参考方案1】:

好的,我刚刚解决了这个问题,如果您遇到这个问题,这里是如何解决的。在 UI 中启用 Drive API 是不够的。

如果应用没有在其他地方显式调用任何与云端硬盘相关的 API 调用,则云端硬盘范围不会被添加到脚本的清单中。

在我的情况下,这通过在 manifest.json 文件中显式启用驱动器范围来工作(请在 UI 中选择“显示清单文件”)。驱动器的作用域是https://www.googleapis.com/auth/drive 被添加到oauthScopes 列表中,例如:


  "timeZone": "Asia/Dubai",
  "oauthScopes": [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/bigquery",
    "https://www.googleapis.com/auth/spreadsheets"
  ],
  "dependencies": 
    "enabledAdvancedServices": [
      "userSymbol": "Drive",
      "serviceId": "drive",
      "version": "v3"
    , 
      "userSymbol": "BigQuery",
      "serviceId": "bigquery",
      "version": "v2"
    ]
  ,
  "webapp": 
    "access": "MYSELF",
    "executeAs": "USER_DEPLOYING"
  ,
  "exceptionLogging": "STACKDRIVER"

【讨论】:

以上是关于BigQuery AppsScript 客户端的默认范围不包括 Google Drive的主要内容,如果未能解决你的问题,请参考以下文章

通过 Dataflow Java API 返回客户端的不一致 BigQuery 数据类型

使用 Python 客户端的 Google BigQuery API

来自 Apps 脚本的 DELETE 的 BigQuery 错误? [复制]

在 Apps 脚本中的自定义函数中,BigQuery 调用失败

使用 Google BigQuery / Apps 脚本为插入 Google 表格的数据添加时间戳

在执行脚本之前等待公式完成