如何从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
相关产品推荐
相关产品推荐

