【问题标题】:How to send value returned by gs function to html template?如何将 gs 函数返回的值发送到 html 模板?
【发布时间】:2019-04-08 22:44:41
【问题描述】:

我正在尝试创建依赖于电子表格内容的 html 模板。但是自从一周以来,我一直坚持将 GS 函数返回的值发送到 html 模板。当我调用位于 html 中的函数时,我得到了我期望的结果。但是当我调用位于 gs.code 文件中的相同函数时,我得到了未定义。我做错了什么?

这行得通,但没用:

HTML 文件:

<script>
  function addOption() {
      var x = document.getElementById("xBad");
      var option = document.createElement("option");
      option.text = newOpt();
      x.add(option);
  };
  function newOpt() {
      var str = "extra option";
      return str;
  }
</script>

但是当我替换返回额外选项到 gs 文件的函数时,在我需要它的地方,它添加了 undefined。

HTML 文件:

<script>
  function addOption() {
  var x = document.getElementById("xBad");
      var option = document.createElement("option");
      option.text = google.script.run.newOpt();
      x.add(option);
  }
</script>

GS 文件:

function newOpt() {
  var str = "extra option";
  return str;
}

我想,我已经阅读了所有关于这个的谷歌 API 文档以及在 stackoverflow 中与我相关的所有问题,但恐怕我找不到解释。唯一的一个答案,我理解建议 google.script.run 不返回值,直到没有 SuccessHandler 放入代码中,但我真的不知道,在这种情况下,什么条件可以成功或失败。

【问题讨论】:

  • 要从 Javascript 调用 Google 脚本函数,请使用 google.script.run
  • 看看这个example
  • google.script.run.newOpt() 异步运行,因此您需要 withSuccessHandler 否则 x.add 将在 newOpt() 完成之前执行。并且您编码的方式不会返回任何内容。参见 withSuccessHandler

标签: javascript html google-apps-script web-applications


【解决方案1】:

这样的事情可能对你有用:

<script>
  function addOption() {
      google.script.run
      .withSuccessHandler(function(txt){
        var x = document.getElementById("xBad");
        var option = document.createElement("option");
        option.text = txt;
        x.add(option);
      })
      .newOpt();
  }
</script>

【讨论】:

  • 首先,newOpt() 被调用,如果它返回一些东西,它被发送到 withSuccessHandler,在这种情况下它是一个匿名函数,并且 txt 用 newOpt() 返回的值填充。这一切都在this page上进行了解释。
  • 谢谢库珀。你又帮了我。但我仍然不明白,它是如何工作的。我将 withSuccessHandler 简化为运行命令必须满足的条件。我将其解释为:withSuccessHandler(condition).effect。但在您的代码中,它看起来很像:withSuccessHandler(effect).condition。是不是更好的解释?
  • withSuccessHandler 不是运行 newOpt() 的条件,它只是为将来某个时间发生的返回建立目标。
  • 这样的解释应该在“这个页面”上,让我理解。再次感谢您。
  • 根据 Google Apps 脚本文档中的概述,我们希望您已经了解 JavaScript。正如概述中所说,如果您是 JavaScript 新手,Codecademy 提供a number of JavaScript courses。也许,这是你应该研究的。
猜你喜欢
  • 1970-01-01
  • 2017-12-26
  • 2011-10-16
  • 2017-06-29
  • 2018-03-09
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多