在新脚本编辑器中为 Google 表格创建和测试插件

Creating and testing an add-on for Google Sheets in the new Script Editor

我已经创建了几个内部附加组件,以使用“旧”Apps 脚本 IDE 在我们公司内自动化一些工作流程。现在,我想使用去年 12 月发布的全新 Apps 脚本 IDE 创建一个新脚本。一切看起来都不错,效果也很好,但是有几件事我想不通。

首先:使用部署 Google Workspace Marketplace IDE 声明“您的部署 ID 将标识您的应用程序支持的所有 Google Workspace 服务。”使用部署 ID 时。因此,我已将我的部署 ID 粘贴在那里。只是一个创建附加菜单的简单脚本和 运行 一个导致警报的函数:

function onInstall () {
  onOpen()
}

function onOpen () {
  var ui = SpreadsheetApp.getUi()
  var menu = ui.createAddonMenu()

  // Create menu structure
  menu
    .addItem('Create proposal', 'proposalShowPopup')

  // Add menu to UI
  menu.addToUi()
}

function proposalShowPopup() {
  Browser.msgBox('Test')
}

然而,当我部署它时,我可以在市场上看到列表,但我无法将它安装到我需要它的表格中。

另外,可能是因为我没有声明这个插件是Sheets插件,所以我无法安装这篇文章中提到的test-deployment: Testing Google Workspace add-ons 通过 Google。 Apps 脚本的部署对话框中缺少 Install

我阅读了很多关于 appsscript.json 文件的信息,但除了以下适用于我的脚本的代码行之外,找不到关于该文件应包含的内容的任何信息:

{
  "timeZone": "Europe/Paris",
  "dependencies": {
    "enabledAdvancedServices": [
      {
        "userSymbol": "Sheets",
        "version": "v4",
        "serviceId": "sheets"
      }
    ]
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

关于如何使用新的 IDE(如前所述效果很好)创建仅适用于表格的插件有什么想法吗?

如能提供正确方向的帮助或建议,我们将不胜感激。

您无法在表格中安装附加组件的原因主要是因为您没有在清单中声明任何关于脚本是附加组件的内容。

由于您希望它在表格中专门使用,因此清单 appscript.json 文件应类似于以下内容:

{
  "timeZone": "Europe/Paris",
  "dependencies": {
    "enabledAdvancedServices": [
      {
        "userSymbol": "Sheets",
        "version": "v4",
        "serviceId": "sheets"
      }
    ]
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "addOns": {
    "sheets": {
      "homepageTrigger": {
        "runFunction": "proposalShowPopup"
      }
    }
  }
}

请注意,已添加 addOns 参数以及 sheets 参数。

addOns 参数具有以下结构,它表示用于定义加载项内容和行为的配置。

{
  "common": {
    object (Common)
  },
  "calendar": {
    object (Calendar)
  },
  "drive": {
    object (Drive)
  },
  "gmail": {
    object (Gmail)
  },
  "docs": {
    object (Docs)
  },
  "sheets": {
    object (Sheets)
  },
  "slides": {
    object (Slides)
  }
}

至于 sheets 参数,它具有以下结构 - 这与 addOns 中的大多数参数相似;但是,由于您提到它是 sheets,这将清楚地表明这些附加类型中的哪一种适用。

{
  "homepageTrigger": {
    object (HomepageTrigger)
  },
  "onFileScopeGrantedTrigger": {
    object (OnFileScopeGrantedTrigger)
  }
}

相应地设置您的清单文件后,您应该能够在转到 测试部署 时看到 安装 按钮弹出:

参考