You need to enable JavaScript to run this app. Google Apps Script处理表格数据时变量作为对象键不生效问题
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script处理表格数据时变量作为对象键不生效问题

问题根因

  • 你错误地使用了点语法people.name访问对象属性,这里的name是固定字符串键,不是你之前声明的name变量的值,所以所有行都会被塞到同一个people.name属性下,和你预期的动态用姓名做键完全不符。
  • 你声明的var name变量没有被实际使用,所以编辑器抛出了Var not being used in object.var的提示。

修正后代码

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');
  var data = sheet.getDataRange().getValues();
  var range = sheet.getRange("A1:L" + data.length);
  range.sort(1);
  const people = {};
  for(var i = 0; i < data.length; i++) {
    // 拼接姓名,建议中间加分隔符避免特殊情况重名
    var name = data[i][0] + '_' + data[i][1];
    console.log(i);
    // 用方括号语法动态使用name变量的值作为对象键
    if (!people[name]) {
      people[name] = {rows: [i]};
    } else {
      people[name].rows.push(i);
    }
  }
  Logger.log(people);
}

改动说明

  • 把people.name替换为people[name]:方括号语法会把括号内变量的实际值作为对象的键,实现每个姓名对应独立对象的需求。
  • 拼接姓名时增加下划线分隔符,避免极端情况下不同姓名拼接后完全相同的问题,比如A列是李B列是明,和A列是李明B列为空的情况,拼接后会重复,加分隔符可以减少这类冲突。
  • 修正后编辑器就不会再报变量未使用的错误,因为你声明的name变量已经被用来作为对象的动态键了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 17:24:06