我正在创建一个web应用程序来与电子表格通信。问题是,在HTML文件中,我使用doGet()和一个名为doSomething()的函数调用了.gs文件中的函数。当我对doSomething调用两次时,它只执行一次。
我的HTML文件(称为lolcatz.html)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<script>
google.script.run.doSomething();
google.script.run.doSomething2();
google.script.run.doSomething();
console.log("Hi");
</script>
</body>
</html>我的Google App脚本文件(名为Code.gs):
function doGet() {
var page = HtmlService.createHtmlOutputFromFile('lolcatz.html');
page.setTitle("Panther Time");
return page;
}
function doSomething() {
Logger.log('I was called!');
}
function doSomething2() {
Logger.log('I was called! Again!');
}
function doStuff() {
doSomething();
doSomething2();
}日志输出:
[18-03-28 14:55:00:032 PDT] I was called!当我进入Inspect Element的JavaScript控制台时,console.log命令执行得很好。
我完全在执行限制之内,并且启用了Google App Script API和Google Sheets API。
发布于 2018-03-29 07:33:58
简短的回答
每次从客户端调用服务器端函数时,Google Apps Script web IDE上的日志都会被清除,因为google.script.run会进行异步调用,而且因为它们是异步的,所以我们不能确定我们将在日志中看到什么。如果你想保留日志,那就用console.log代替Logger.log。
测试
要测试客户端代码如何与使用Logger的服务器端代码交互,请尝试执行以下操作:
lolcatz.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<script>
google.script.run.doSomething('I was called!');
google.script.run.doSomething2('I was called to!');
google.script.run.doSomething('I was called again!');
console.log("Hi");
</script>
</body>
</html>Code.gs
function doGet() {
var page = HtmlService.createHtmlOutputFromFile('lolcatz.html');
page.setTitle("Panther Time");
return page;
}
function doSomething(message) {
Logger.log(message);
}
function doSomething2(message) {
Logger.log(message);
}打开Web应用程序后
执行记录
从视图>执行脚本
18-03-28 17:36:00:403 CST开始执行
18-03-28 17:36:00:412cst Logger.log([我又被调用了!,[]]) 0秒执行成功0.002秒总运行时
日志
从视图>日志
18-03-28 17:36:00:412 CST I再次被呼叫!
通过console.log更改Logger.log
通过console.log更改Logger.log后,再次打开web应用程序(或刷新选项卡)
从视图>堆栈驱动程序日志记录
2018-03-28 17:43:50.859 CST I被调用!
2018年-03-28 17:43:51.073 CST我被召唤了!
2018-03-28 17:43:51.233 CST I再次被呼叫!
https://stackoverflow.com/questions/49544931
复制相似问题