You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script调用Code.gs函数返回undefined问题排查

问题根因

返回undefined是因为你对google.script.run的用法有误:这个API是前端和Code.gs后端通信的异步接口,调用后不会直接同步返回后端函数的执行结果,你直接把调用表达式赋值给输入框,拿到的只能是undefined。

修复方法

Code.gs里的业务逻辑本身没有问题,只需要调整前端Index.html里的调用逻辑,通过withSuccessHandler注册执行成功的回调,在回调里接收后端返回值再赋值给结果框即可。

修正后的前端脚本逻辑

把原来的processData函数替换成下面的写法:

function processData() {
  var lastName = document.getElementById("txtLastName").value;
  var firstName = document.getElementById("txtFirstName").value;
  google.script.run
    // 后端执行成功后,会把返回值传入这个回调函数
    .withSuccessHandler(function(returnedTxt) {
      document.getElementById("txtResult").value = returnedTxt;
    })
    // 可选:加错误捕获,后端执行报错时能看到错误信息,后续对接Sheets调试很有用
    .withFailureHandler(function(error) {
      alert("处理失败:" + error.message);
    })
    .getData(lastName, firstName);
}

完整验证通过的代码

Code.gs(原有逻辑无需改动)

function doGet(e) {
  return HtmlService.createTemplateFromFile('Index').evaluate();
}

function getData(a, b){
  var lastName = a;
  var firstName = b;
  var txtResult = "Hello " + lastName + ", " + firstName;
  return txtResult;
}

Index.html

<!DOCTYPE html>
<html>
  <body>
    <div>
      <label>Enter Last Name</label>
      <input type="text" id="txtLastName"/></br>
      <label>Enter First Name</label>
      <input type="text" id="txtFirstName"/></br>
      <button id="btnProcess">Process</button></br>
      <input type="text" id="txtResult"/>
    </div>
  </body>

  <script>
    document.getElementById("btnProcess").addEventListener("click", processData);                
    function processData() {
      var lastName = document.getElementById("txtLastName").value;
      var firstName = document.getElementById("txtFirstName").value;
      google.script.run
        .withSuccessHandler(function(res) {
          document.getElementById("txtResult").value = res;
        })
        .withFailureHandler(function(err) {
          console.error(err);
        })
        .getData(lastName, firstName);
    }
  </script>
</html>
注意点
  • 所有通过google.script.run调用后端Code.gs函数的场景,都必须通过withSuccessHandler拿返回值,不存在同步获取返回值的写法
  • 前端传给后端的参数只能是基础类型、普通可序列化的对象/数组,不能传DOM节点、函数这类无法序列化的内容,你现在传两个字符串参数是完全符合要求的

内容的提问来源于stack exchange,提问作者rmbelmonte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:45:32