我从在Google脚本(应用程序脚本)中绑定到工作表中的Java脚本开始. 我成功地在侧边栏中打开了html. 此外,我还添加了一个稍后要使用的参数,以形成模板对象.
//OPEN THE FORM IN SIDEBAR with argument passed to formTemplate
function showFormInSidebar(argument ='I want pass this') {
let htmlName = 'Index'
var htmlTemplate = HtmlService.createTemplateFromFile(htmlName)
htmlTemplate.argument = argument;
var html = htmlTemplate.evaluate();
SpreadsheetApp.getUi().showSidebar(html);
}
接下来,我使用index.html. 我可以在那里读到我的论点和一些谷歌脚本的东西,测试1是好的.
然后,我判断是否可以从我的第二个Java脚本函数--est2中看到一个操作.我可以通过点击(或点击‘Load’事件)来运行它.这个很好用.
主要问题是如何在第二个JS中获取参数值? 直接Arg传球不起作用.无论如何,secudaryJS中的参数只是一个事件对象.那里有大量的数据,但我最初的论点是找不到的.
<!DOCTYPE html>
<html>
<head>
<script>
window.addEventListener('click', secondaryJS);
function secondaryJS(event){
console.log('look event', event);
document.getElementById("mytest2").innerHTML = 'This is replacing ok'
// Wish to make some operations here, like
let processedResult = argument + 'some more'
document.getElementById("mytest3").innerHTML = '???? want pass result from here, using initial argument inside of this function'
}
</script>
</head>
<body>
<p>test1, reading argument from htmlTemplate.argument, ok:</p>
<p><?!= argument ?></p>
<p>test2:</p>
<p id = "mytest2">Must be replaced from secondaryJS with string value after page load, ok</p>
<p>test3:</p>
<p id = "mytest3">Must be replaced from secondaryJS with result which is initial argument processed in an event listener function, NOTok</p>
</body>
</html>