【问题标题】:ScriptApp.getService().getUrl() doesn't return actual script URLScriptApp.getService().getUrl() 不返回实际的脚本 URL
【发布时间】:2020-09-21 21:36:11
【问题描述】:

我的 Google 日历插件发布为 deployment id AKfycbwFmqDJdIQDqGIMmujFEzwKZlrBKTPJaIitsHGfmqL72Ehm-YShfk3aJXLcJndQJJCU,如下所示:

但是当使用createSettingsUrlFunction 设置附加“设置” URL 并调用以下 API 时:

ScriptApp.getService().getUrl()

返回的 URL 与部署 ID URL 不同: https://script.google.com/a/xxx.com/macros/s/AKfycbyy4AAzPl3smU-kdts89HQVaZiUFkFek-TyxwBi0FDsMHALscM/exec

这个脚本 ID AKfycbyy4AAzPl3smU-kdts89HQVaZiUFkFek-TyxwBi0FDsMHALscM 是什么?我没有使用此 ID 的任何部署。在以前的部署中,ScriptApp.getService().getUrl() 总是返回相同的 id(脚本 id == 部署 id)。

【问题讨论】:

标签: google-apps-script add-on


【解决方案1】:

脚本 ID 和部署 ID 不同。

脚本 ID 是唯一的,无论项目是作为附加组件还是作为 Web 应用程序部署或发布。另一方面,单个项目的部署 ID 可能与部署的项目一样多。

有两种类型的部署

  • 标头部署
  • 版本化部署

AFAIK 标头部署 ID 可能与脚本 ID 相同,但在 vesioned 部署中,部署 ID 将与脚本 ID 不同。

ScriptApp.getService().getUrl() 在版本化部署中返回错误 ID 的一个简单解决方案实际上是一种解决方法:

硬编码要使用的 ID,而不是使用 ScriptApp.getService().getUrl()

解决方案可能是使用projects.deployments.list,如果这不会对您的项目造成过度杀伤,因为它需要额外的授权范围。

资源

相关

【讨论】:

  • 感谢您的回答。困扰我的是 ScriptApp.getService().getUrl() 指向一个不存在的 URL。
  • 它看起来像用于部署 Web 应用程序的典型 URL,也许它是您的应用程序的 URL 如果它将被部署为 Web 应用程序。
猜你喜欢
  • 2021-01-27
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多