gpt4 book ai didi

javascript - google.script.run.myFunction() 不会从客户端 HTML 脚本调用服务器 myFunction()

转载 作者:行者123 更新时间:2023-11-30 16:47:22 26 4
gpt4 key购买 nike

According to the documentation ,从客户端 HTML 脚本调用 Google Apps 脚本函数应该像 google.script.run.myFunction() 一样简单。但是它似乎对我不起作用:

我的代码

function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Dialog')
.addItem('Open', 'openDialog')
.addToUi();
}

function openDialog() {
var html = HtmlService.createHtmlOutputFromFile('Index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi()
.showModalDialog(html, 'My Dialog');
}

function doSomething() {
var sheet = SpreadsheetApp.getActive().getActiveSheet();
sheet.getRange(sheet.getLastRow()+1, 1).setValue("Hello :)");
}

请注意,从 IDE 调用 doSomething() 运行顺利。但是不是来自 HTML 脚本:

我的 HTML

<script>
google.script.run.doSomething();
</script>

最佳答案

我正常使用,效果很好。

但我从未在页面加载前尝试过。由于 Google 有很多安全障碍,例如用自己的自定义正文替换 html body,我认为值得尝试在页面加载的处理程序中调用它。

尝试将警报放入处理程序(见下文)以查看它是否真的在运行。html 代码其他部分的任何一个小错误通常都会导致整个脚本根本无法运行。

注意事项:如果您的服务器端脚本中有全局变量,这些将不会持久化!!!每次您使用 google.script.run 时它们都会重置。因此,请确保 doSomething() 拥有自身所需的一切。

如果您希望在 doSomething() 之后看到结果,请考虑将处理程序添加到 google.script.run。您的服务器端脚本将无法更改用户界面,如果它是模态的,也无法打开新界面。 (从未尝试过非模态...)

google.script.run
.withSuccessHandler(function(data,element){window.alert("executed");})
.withFailureHandler(function(msg,element){window.alert("failed"); })
.doSomething();

如果没有出现任何消​​息,则问题不在此处,而在别处。其他一些事情甚至阻止您的脚本启动。

关于javascript - google.script.run.myFunction() 不会从客户端 HTML 脚本调用服务器 myFunction(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31046920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com