所有 Google Workspace 插件都需要显式 urlFetchWhitelist,在部署工作表插件时使用 UrlFetchApp 错误

san*_*nta 3 google-apps-script google-workspace

我正在尝试部署一个谷歌表插件(私人插件)。我正在使用 moment js 来计算 code.js 文件中的日期

我的清单看起来像这样

显现:
显现

当我去部署插件时,我收到错误

“所有使用 UrlFetchApp 的 Google Workspace 插件都需要明确的 urlFetchWhitelist”

我浏览了 stackoverflow 上的帖子,做了同样的三项建议的更改

  1. 将“https://www.googleapis.com/auth/script.external_request”添加到我的 oauthScopes [不起作用]
  2. 安装了触发器并调用了获取外部请求的权限,但它不起作用。
  3. 最后我尝试添加一个方法来根据此链接调用打开时的触发器

当我点击“部署添加”时仍然遇到相同的错误

urlFetchWhitelist 错误:
urlFetchWhitelist 错误

Raf*_*rmo 5

回答:

您需要urlFetchWhitelist向清单中添加一个参数,并将您希望在数组中获取的所有 url 包含为其值。

例子:

假设您有以下行:

const res = UrlFetchApp.fetch("https://google.com")
Run Code Online (Sandbox Code Playgroud)

在你的代码中。

您需要将其添加到appsscript.json清单文件中的白名单中:

urlFetchWhitelist: ["https://google.com/"]
Run Code Online (Sandbox Code Playgroud)

需要注意的事项(来自文档):

  • 每个前缀必须是有效的 URL。
  • 每个前缀必须使用https://, 而不是http://
  • 每个前缀必须有一个完整的域。
  • 每个前缀必须有一个非空路径。例如,https://www.google.com/有效但https://www.google.com无效。
  • 您可以使用通配符来匹配 URL 子域前缀。
  • 可以在字段中使用单个 * 通配符addOns.common.openLinkUrlPrefixes来匹配所有链接,但不建议这样做,因为它会使用户的数据面临风险,并会延长附加审核过程。仅当您的附加功能需要时才使用通配符。

2022 年 1 月 13 日更新:

根据此问题跟踪器报告中的信息,只有域/子域需要列入白名单才能获取。

例如,白名单:

"urlFetchWhitelist": ["https://myapp.com/"]
Run Code Online (Sandbox Code Playgroud)

将允许UrlFetchApp连接到该域上的路径:

UrlFetchApp.fetch("https://myapp.com/getUser")
Run Code Online (Sandbox Code Playgroud)

参考: