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

修复通过侧边栏更新Google Sheet Phonelist表数据的Apps Script代码

Google Sheet侧边栏同步修改数据代码修正

原代码存在的问题

  • 侧边栏调用方法错误:SpreadsheetApp.getUi().sidebar(html) 应为 showSidebar() 方法
  • 拼写错误:ws.getRange(dat[i]) 中变量名错误,不存在dat变量,同时缺少范围参数定义
  • 列索引错误:工作表列顺序为NAME/PLACE/PHONE,data[i][1]取的是PLACE列的值,匹配姓名应使用data[i][0](数组索引从0开始,对应第1列NAME)
  • 匹配条件硬编码:固定匹配"John",改为读取表单传入的name变量才能匹配目标修改用户,若仅测试修改John可保留固定值
  • 范围与赋值方法错误:setValue()仅支持单个单元格赋值,同时修改一行3列数据需要用setValues(),且传入参数为二维数组,getRange()需要指定「行号/起始列/行数/列数」四个参数
  • 数组与工作表行号错位:data数组索引从0开始,工作表行号从1开始,数组第i项对应工作表第i+1行

修正后完整代码

function sidebar() {
  var html = HtmlService.createHtmlOutputFromFile("Form").setTitle('Phone Details');
  SpreadsheetApp.getUi().showSidebar(html);
}

function result(form) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Phonelist");
  var data = ws.getDataRange().getValues(); 
 
  var name = form.name;
  var place = form.place;
  var phone = form.phone;
 
  for (var i = 1; i < data.length; i++) {
    // 仅测试固定修改John时,可将条件改为 data[i][0] == "John"
    if(data[i][0] == name){
      const updateValues = [[name, place, phone]];
      // 参数说明:行号、起始列、修改行数、修改列数
      ws.getRange(i + 1, 1, 1, 3).setValues(updateValues);
      break; // 匹配到唯一目标后跳出循环,存在重名需求可删除该行
    }
  }
}

注意事项

  • 请确保Form.html表单提交时传递的字段名与代码中form.name/form.place/form.phone完全一致,无拼写错误
  • 若存在重名人员,建议添加唯一ID字段作为匹配条件,避免误改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:54:01