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

时间:2015-11-17 20:58:51

标签: google-apps-script

我已尽力完成示例代码,并且我有一个插件,当您单击自定义菜单时,它会弹出一个基于html文件的对话框(HtmlService类)内容)。

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?我无法在Dev Tools中找到它,假设Sheets用画布或类似的东西渲染所有内容)?

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

......但我没有看到任何我认为与我尝试过的事情有关的事情。

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

1 个答案:

答案 0 :(得分:2)

load external javascript,您必须在模板化HTML中使用scriplets(部分取自GAS文档)

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();
}

在你的gs代码中,你会有类似的东西

SELECT FirstName as [First Name], LastName as [Last Name], Email, Phone, StreetAddress as [Street Address], City, State, Country, Zip, Email, Phone, PaymentDate as [Payment Date], TransactionID as [Transaction ID], 
CASE WHEN PaymentStatus = 0 THEN 'False' 
    ELSE 'True' 
END as [Payment Status]
FROM    TableName E
WHERE   E.ID = 1
        AND E.PaymentStatus = False
ORDER BY E.ItemCreatedWhen ASC