Google App Script Web App互动

时间:2018-03-28 22:05:19

标签: google-apps-script

我正在创建一个与电子表格进行通信的网络应用。问题是,从HTML文件中,我使用.gs调用doGet()文件中的函数和名为doSomething()的函数。当我呼叫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表格API。

1 个答案:

答案 0 :(得分:2)

简短回答

每次从客户端调用服务器端函数时,Google Apps脚本Web IDE上的日志都会被清除,因为google.script.run会进行异步调用,因为它们是异步的,所以我们无法确定在日志上看到。如果您想保留日志,请使用console.log代替con 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 App后

执行记录

从视图&gt;执行记录

  

[18-03-28 17:36:00:403 CST]开始执行
  [18-03-28 17:36:00:412 CST] Logger.log([我再次被召唤!,[]])[0秒]
  [18-03-28 17:36:00:414 CST]执行成功[总运行时间为0.002秒]

日志

从视图&gt;日志

  

[18-03-28 17:36:00:412 CST]我再次被召唤!

通过console.log

更改Logger.log

通过console.log更改Logger.log后,再次打开Web应用程序(或刷新选项卡)

从视图&gt;堆栈驱动程序日志记录

  

2018-03-28 17:43:50.859 CST我被叫了!
  2018-03-28 17:43:51.073 CST我被叫到了!
  2018-03-28 17:43:51.233 CST我再次被召唤!