【发布时间】:2014-01-17 19:21:21
【问题描述】:
我最近开始使用 Google Docs 电子表格,并开始尝试在表格中编写脚本。在一个特定的工作表中,我想向用户显示一个自定义对话框,我已经设法做到了。
现在,我想让对话框中的一些表格行可点击。我写了一些应该完成这项工作的代码,但 Caja 似乎正在删除我写的代码。
简化版的代码(还是有问题):
function showSkillsForCurrentLevel() {
var html, out, app;
html = '<div>Text. Yay!</div>'
+ '<script>'
+ '(function(){'
+ ' "use strict";'
+ ' var toggleFinished = function toggleFinished(){'
+ ' this.classList.toggle("finished");'
+ ' },'
+ ' rows,'
+ ' i = 0;'
+ ' rows = document.getElementsByClassName("skill-leveling").getElementsByClassName("finishable");'
+ ' if (rows.length) {'
+ ' for (i = 0; i < rows.length; i += 1) {'
+ ' rows[i].onclick = toggleFinished;'
+ ' }'
+ ' }'
+ '}());'
+ '</script>';
out = HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.NATIVE).setTitle('Leveling Plan').setWidth(400).setHeight(400);
app = SpreadsheetApp.getActiveSpreadsheet();
app.show(out);
};
我在显示的对话框中得到的是:
<caja-v-body>
<div>Text. Yay!</div>
<script></script>
</caja-v-body>
我认为 Caja 出于某种原因剥离了代码,但我似乎找不到任何文档或示例,说明如何在 Code.gs 中正确包含脚本,以便它们在 Caja 清理后保持完整。
我假设其他人遇到过这个问题,我希望有人能分享解决方案。
TLDR 版本:
如何在HtmlService.createHtmlOutput 创建的对话框中包含 JavaScript?
【问题讨论】:
标签: google-apps-script google-docs google-caja