好吧,我刚开始设置一个动态的独立谷歌脚本。我无法获得对html进行任何动态更改的按钮。我想点击按钮会调用谷歌脚本代码函数,并对结果Index.html进行更改。我缺少什么?
代码.gs:
function doGet() {
return HtmlService
.createHtmlOutputFromFile('Index')
.setTitle('DynamicTest');
}
function DoSomething() {
var obj = document.getElementById("status");
alert("kachow");
obj.innerText = "It's magic!";
}
Index.html
<!DOCTYPE html>
<html>
<body>
<button id="submitButton">Submit</button>
<br />
<div id="status">Static</div>
<br />
<script>
document.getElementById('submitButton').addEventListener('click', function() {
google.script.run.DoSomething();
});
</script>
</body>
</html>
谢谢!
更新解决方案:感谢@Tanaike提供的解决方案!以下是完整的代码,它还添加了一条预处理消息以及一条后处理消息,在谷歌脚本应用程序完成调用的函数后显示:
<!DOCTYPE html>
<html>
<body>
<button id="submitButton">Submit</button>
<br />
<div id="status">Static</div>
<br />
<script>
document.getElementById('submitButton').addEventListener('click', function() {
var obj = document.getElementById('status');
obj.innerText = 'Processing. Please wait...';
google.script.run.withSuccessHandler(value => {
var obj = document.getElementById("status");
obj.innerText = value;
}).DoSomething();
});
</script>
</body>
</html>
代码.gs
function doGet() {
return HtmlService
.createHtmlOutputFromFile('Index')
.setTitle('DynamicTest');
}
function DoSomething() {
return "It's magic!";
}
修改点:
-
在您的脚本中,
DoSomething()
似乎不是谷歌应用程序脚本。我认为这是Javascript。我认为这就是你问题的原因。因此,当完成以下修改时,我认为脚本是有效的。<!DOCTYPE html> <html> <body> <button id="submitButton">Submit</button> <br /> <div id="status">Static</div> <br /> <script> document.getElementById('submitButton').addEventListener('click', function() { // google.script.run.DoSomething(); DoSomething(); }); function DoSomething() { var obj = document.getElementById("status"); alert("kachow"); obj.innerText = "It's magic!"; } </script> </body> </html>
-
但我认为您可能希望在Javascript方面和Google Apps Script之间进行交流。因此,在这种情况下,请修改如下。
修改的脚本:
Code.gs
:function doGet() {
return HtmlService
.createHtmlOutputFromFile('Index')
.setTitle('DynamicTest');
}
function DoSomething() {
return "It's magic!";
}
Index.html
:<!DOCTYPE html>
<html>
<body>
<button id="submitButton">Submit</button>
<br />
<div id="status">Static</div>
<br />
<script>
document.getElementById('submitButton').addEventListener('click', function() {
google.script.run.withSuccessHandler(value => {
var obj = document.getElementById("status");
alert("kachow");
obj.innerText = value;
}).DoSomething();
});
</script>
</body>
</html>
参考:
- 类google.script.run