我已尽力完成示例代码,并且我有一个插件,当您单击自定义菜单时,它会弹出一个基于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图形库(或者可能是另一个类似的库)来实现新类型的图表。我需要能够执行该库中包含的方法。
答案 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