部署 sheet 附加组件时使用 UrlFetchApp 错误的所有 Google Workspace 附加组件都需要明确的 urlFetchWhitelist

An explicit urlFetchWhitelist is required for all Google Workspace add-ons using UrlFetchApp error while deploying sheet add on

我正在尝试部署 google sheet 附加组件(私有附加组件。) 我正在使用 moment js 计算 code.js 文件

中的日期

我的清单看起来像这样

清单:

当我部署插件时出现错误

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

我浏览了 Whosebug 上的帖子,并做了三处推荐的更改

  1. 将“https://www.googleapis.com/auth/script.external_request”添加到我的 oauthScopes [没有用]
  2. 安装了触发器并调用了获取外部请求的权限,但没有成功。
  3. 最后我尝试添加一个方法来根据 this link
  4. 在打开时调用触发器

当我点击 deploy add on

时,我仍然遇到同样的错误

urlFetchWhitelist 错误:

答案:

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

示例:

假设你有这条线:

const res = UrlFetchApp.fetch("https://google.com")

在您的代码中。

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

urlFetchWhitelist: ["https://google.com/"]

注意事项(来自文档):

  • 每个前缀都必须是有效的 URL。
  • 每个前缀必须使用https://,而不是http://
  • 每个前缀必须有一个完整的域。
  • 每个前缀必须有一个非空路径。例如,https://www.google.com/ 有效,但 https://www.google.com 无效。
  • 您可以使用 wildcards 来匹配 URL 个子域前缀。
  • 可以在 addOns.common.openLinkUrlPrefixes field to match all links, but this is not recommended as it can expose a user's data to risk and can prolong the add-on review process 中使用单个 * 通配符。仅在您的附加功能需要时才使用通配符。

2022-01-13 更新:

根据 this Issue Tracker report 上的信息,只有 domain/sub-domain 需要列入白名单才能获取。

例如白名单:

"urlFetchWhitelist": ["https://myapp.com/"]

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

UrlFetchApp.fetch("https://myapp.com/getUser")

参考文献: