创建一个非常简单的动态谷歌脚本Web应用程序



好吧,我刚开始设置一个动态的独立谷歌脚本。我无法获得对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

最新更新