google.script.run 不会在 Code.gs 中运行该功能



我正试图在我的工作表中创建一个html框,其中包含一个应该运行函数的按钮。

我简化了代码以隔离问题,但我所做的似乎有问题。

使用下面的代码,创建了html输出,按钮会做出反应,因为警报有效,但code.gs中的函数不会运行。执行显示htmlBox((已完成,但没有returnYes((的痕迹

你能帮我吗?

代码.gs

function htmlBox(){
var htmlOutput = HtmlService
.createHtmlOutputFromFile("box")
.setWidth(200)
.setHeight(50);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Try to make work this button");
}
function returnYes(){
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
var value = "yes!";

ws.getRange(1, 1).setValue(value);

} 

box.html

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>

<div>
<button id="btn">Run It!</button>
</div>

<script>

document.getElementById("btn").addEventListener("click",buttonClicked);

function buttonClicked() {

alert("Button clicked");
google.script.run.returnYes();

}
</script>

</body>
</html>

编辑:以下代码无法解决中描述的问题

问题是Code.gs.中缺少doGet函数

通过添加它,现在就可以工作了。

代码.gs

function doGet() {
return HtmlService.createHtmlOutputFromFile("box");
function htmlBox(){
var htmlOutput = HtmlService
.createHtmlOutputFromFile("box")
.setWidth(200)
.setHeight(50);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Try to make work this button");
}
function returnYes(){
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
var value = "yes!";

ws.getRange(1, 1).setValue(value);

}

向@Baby_Boy咨询解决方案。

有任何消息。doGet函数不能解决上述问题。

今天,我尝试运行buttonClicked(),但它不起作用,尽管有doGet函数。不同的是,我在家里运行了这个函数。当它以前工作时,我正在工作,并连接到我雇主的网络。当我试图从我的私人网络启动该功能时,它似乎没有运行。因此,正如@Iamblichus所建议的,这个问题可能仅限于我的帐户或域。

谢谢@Iamblichus对你的推断。我不知道哪种限制可以阻止我在同一个Apps Scripts项目中创建工作html和js文件,我也不知道这种限制的目标是什么,但我至少知道什么不起作用。

最新更新