【问题标题】:Google App Script Web App InteractionGoogle App Script Web App 交互
【发布时间】:2018-03-29 08:16:16
【问题描述】:

我正在创建一个网络应用程序来与电子表格进行通信。问题是,从 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。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    简答

    每次从客户端调用服务器端函数时,Google Apps Script 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>
    

    代码.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);
    }
    

    打开网络应用后

    执行记录

    从视图 > 执行记录

    [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 秒总运行时间]

    日志

    从视图 > 日志

    [18-03-28 17:36:00:412 CST] 我又被叫到了!

    通过 console.log 改变 Logger.log

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

    从视图 > Stackdriver 日志记录

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

    【讨论】:

    • Afraid Not... Google Cloud 系统上没有显示任何内容,并且应用内日志正在返回 [18-03-28 21:39:59:286 EDT] I was called again!。我一直在做一些窥探,发现一些outage 一直在进行。
    • @Stiffy2000 您是否使用以/dev 结尾的网址进行测试?
    • 是的,网址以/dev结尾
    猜你喜欢
    • 2017-11-24
    • 2019-08-13
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多