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

GAS中google.script.run调用函数无法同时返回两个值如何解决

问题根因

你代码里有4个问题直接导致返回值异常:

  • 函数中连续写两个return是无效逻辑:JS执行到第一个return就会立刻终止当前函数,后面的return email永远不会被执行
  • 变量名写错:你读取表格数据存在data变量中,循环内取值时错用了不存在的inputData变量,运行时会触发引用错误
  • google.script.run的成功回调仅支持接收1个返回参数,就算服务端能返回多个值,前端回调的第二个形参永远是undefined
  • 额外bug:GAS服务端运行环境没有浏览器的alert方法,catch块里写alert(e)会直接抛出运行错误
修正后代码

服务端GAS代码

把需要返回的多个字段封装为单个对象返回,同时修正变量名、错误处理逻辑:

function phoneSearch(phone){
  try {
    const ss = SpreadsheetApp.getActive();
    const sheet = ss.getSheetByName("sheetNameHere");
    const data = sheet.getDataRange().getValues();
    for (let i = 1; i < data.length; i++) {
      if (data[i][4] === phone) {
        // 多字段封装为对象一次性返回
        return {
          name: data[i][3],
          email: data[i][5]
        }
      }
    }
    // 无匹配结果时返回空值,避免前端取值报错
    return {name: "", email: ""}
  } catch(e) {
    // 服务端用console打印错误,不要用alert
    console.error(e.message)
    return {name: "", email: ""}
  }
}

前端HTML代码

调整成功回调逻辑,从返回的对象中拆分需要的字段:

<script>
  function phoneSearch() {
    const phone = document.getElementById("phone").value;
    google.script.run.withSuccessHandler(onSuccess).phoneSearch(phone);
  }
  function onSuccess(res) {
    document.getElementById('nameDiv').innerHTML = `<div>${res.name}</div>`;
    document.getElementById('emailDiv').innerHTML = `<div>${res.email}</div>`;
  } 
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:09