如何在 Google Apps 插件脚本中使用外部 javascript 库?

How do you use an external javascript library in a Google Apps addon script?

我一直在尽我所能地完成示例代码,并且我有一个插件,当您单击自定义菜单时,它会弹出一个基于 html 文件的对话框( HtmlService class 东西)。

function showDialog() {
  var html = HtmlService.createHtmlOutputFromFile('dialog')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setWidth(400)
      .setHeight(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(html, 'Need a name for this');
}

不过,我似乎无法从此 html 文件加载任何外部 javascript 库。如果它们包含在脚本标签中,则不会抛出任何错误,但在 html 文件中执行 javascript 的任何尝试都会失败,并且不会出现任何提示。我知道有一个安全模型,但文档没有启发性。

这是实际的 html 文件吗(iframe?我无法在开发工具中找到它,假设 Sheets 使用 canvas 或类似的东西渲染所有内容)?

我相信我已经彻底阅读了文档(并链接自): https://developers.google.com/apps-script/reference/html/

...但我没有看到任何我认为与我正在尝试的内容相关的内容。

具体来说,我希望能够使用 Dracula 图形库(或者可能是另一个类似的库)来实现一种新型图表。我需要能够执行该库中包含的方法。

模板化 HTML 中的 load external javascript, you have to use scriplets(部分取自 GAS 文档)

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <?!= include('StylesheetFileName'); ?>
  </head>
  <body>
    <h1>Welcome</h1>
    <p>Please enjoy this helpful script.</p>
    <?!= include('JavaScriptFileName'); ?>
  </body>
</html>

在你的 gs 代码中你会有这样的东西

function showDialog() {
var html = HtmlService.createTemplateFromFile('dialog')
            .evaluate()
            .setSandboxMode(HtmlService.SandboxMode.IFRAME)
            .setWidth(400)
            .setHeight(300);
        SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
        .showModalDialog(html, 'Dialog Title');
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}