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

如何从index.html调用带参数的Google Apps Script服务端getData函数

问题解决方法

你的前端调用google.script.run传参的写法本身是正确的,无法传参的核心问题是服务端code.gs中的getData函数没有定义接收参数的形参,导致前端传过来的id没有被接收。

1 修正服务端code.gs代码

给getData函数添加id形参,同时补充类型匹配优化,避免过滤失效:

// 新增id形参,接收前端传递的参数
function getData(id) {
  // 原A2:K2仅取第二行数据无过滤意义,建议修改为A2:K取全表有效数据
  var range = SpreadsheetApp.getActive().getSheetByName("Продажи").getRange("A2:K").getValues();
  var data = cleanRange(range, id)
  return data
}

function cleanRange(range, id){
  var filtered = range.filter(function (el) {
    // 统一转成字符串比较,避免数字/字符串类型不匹配导致全等判断失效
    return el[5] != null && el[5].toString() === id;
  });
  return filtered;
}

2 前端调用说明

你现有index.html里的调用逻辑无需修改,google.script.run.withSuccessHandler(setData).getData(id)就是标准的传参调用服务端函数的写法,参数会自动按顺序传递给服务端对应函数的形参。

如果需要传递多个参数,直接在调用时按顺序追加即可,示例如下:

// 前端传3个参数
google.script.run.withSuccessHandler(callback).functionName(p1, p2, p3)

// 服务端对应接收参数
function functionName(p1, p2, p3) {
  // 业务处理逻辑
}

可选优化建议

可以添加失败回调捕获服务端执行错误,方便排查问题:

document.getElementById("id").onchange = function(){
  let id = this.value
  google.script.run
    .withSuccessHandler(setData)
    .withFailureHandler(err => {
      console.error('调用服务端失败:', err)
    })
    .getData(id)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:36:03