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

Google Sheets会员积分更新求助:匹配用户名并累加对应行积分

Google Sheets 会员积分累加功能实现方案

需求回顾

完成员工提交「PointsForm」表单后的核心功能:

  • 在「Membership Database」工作表的B列匹配输入的用户名
  • 将「PointsForm」中F10单元格的积分值,累加到该用户对应行的M列总积分中

修改后的完整代码

function checksubmitfinal() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formSheet = ss.getSheetByName("PointsForm"); // 表单工作表
  var dataSheet = ss.getSheetByName("Calcs"); // 追踪工作表
  var memSheet = ss.getSheetByName("Member Database"); // 会员数据库工作表

  // 获取表单输入值
  var username = formSheet.getRange("C8").getValue().trim();
  var task = formSheet.getRange("F8").getValue().trim();
  var queryUser = formSheet.getRange("C10").getValue().trim();
  var addPoints = formSheet.getRange("F10").getValue();

  // 检查空字段与积分格式
  var blankExists = false;
  if (!username || !task || !queryUser || isNaN(addPoints)) {
    blankExists = true;
  }

  if (blankExists) {
    SpreadsheetApp.getUi().alert('请确保所有字段填写完整,且积分值为有效数字!');
    return;
  }

  // 匹配会员数据库中的用户名
  var usernames = memSheet.getRange("B:B").getValues().flat(); // 获取B列所有用户名
  var targetRow = usernames.indexOf(username) + 1; // 转换为表格行号(数组索引从0开始)

  if (targetRow === 0) {
    SpreadsheetApp.getUi().alert('未找到该用户名,请检查输入!');
    return;
  }

  // 计算并更新总积分
  var currentPoints = memSheet.getRange(targetRow, 13).getValue(); // M列对应第13列
  var newPoints = currentPoints + addPoints;
  memSheet.getRange(targetRow, 13).setValue(newPoints);

  // 同步表单详情到追踪工作表
  var values = [[username, task, queryUser]];
  dataSheet.getRange(dataSheet.getLastRow() + 1, 1, 1, 3).setValues(values);

  SpreadsheetApp.getUi().alert('积分已成功添加!');
}

关键功能说明

  • 输入校验优化:新增积分值的数字格式校验,避免非数字输入引发错误
  • 用户名匹配逻辑:通过indexOf快速定位B列中匹配的用户名,注意数组索引与表格行号的转换(数组从0开始,表格行从1开始)
  • 积分累加逻辑:读取目标行当前的M列积分,累加新增积分后重新写入
  • 异常拦截:如果找不到匹配的用户名,弹出提示并终止流程,避免无效操作
  • 代码精简:移除原代码中重复获取输入值的冗余部分,提升执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:22:26