私は最近、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 バージョン:
によって作成されたダイアログに JavaScript を含めるにはどうすればよいHtmlService.createHtmlOutput
ですか?