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

如何使用Apps Script对二维数组中的重复项求和?

实现二维数组的SUMIF式合并(适配Google Sheets)

需求说明

现有如下二维数组,需合并子数组第一个元素的重复项,对第二个元素求和:

const arr1 = [
  ["1150-500101-1000005530", 2750.0],  
  ["1150-500101-1000005530", 275.0], 
  ["1150-500101-1000008371", 825.0],  
  ["1150-500101-1000014950", 550.0],  
  ["1150-500101-1000019105", 589.0],  
  ["1150-500101-1000019111", 589.0],  
  ["1150-500101-1000019111", 275.0]
];

期望输出:

const reducedArr1 = [
  ["1150-500101-1000005530", 3025.0],
  ["1150-500101-1000008371", 825.0],
  ["1150-500101-1000014950", 550.0],
  ["1150-500101-1000019105", 589.0],
  ["1150-500101-1000019111", 864.0]
];

数据来自Google Sheet且会动态更新,需要无需硬编码键的通用解决方案,实现类似Excel/SUMIF的功能并将结果写入报表。


通用实现代码(Google Apps Script)

// 核心函数:以子数组第一个元素为键,求和第二个元素
function sumByFirstColumn(arr) {
  const sumMap = {};
  arr.forEach(row => {
    const key = row[0];
    const value = row[1];
    sumMap[key] = (sumMap[key] || 0) + value;
  });
  // 将映射对象转回二维数组
  return Object.entries(sumMap);
}

// 示例:从Google Sheet读取数据并处理后写入
function processSheetData() {
  // 1. 读取源数据(假设源数据在Sheet1,包含表头)
  const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  const allData = sourceSheet.getDataRange().getValues();
  // 跳过表头,取实际数据
  const dataToProcess = allData.slice(1);

  // 2. 合并求和
  const summedData = sumByFirstColumn(dataToProcess);

  // 3. 将结果写入目标工作表(比如Sheet2)
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  targetSheet.clearContents();
  
  // 写入表头(可选)
  targetSheet.getRange(1, 1).setValue("标识ID");
  targetSheet.getRange(1, 2).setValue("累计值");
  
  // 写入合并后的数据
  targetSheet.getRange(2, 1, summedData.length, summedData[0].length).setValues(summedData);
}

使用说明

  1. 打开目标Google Sheet,点击「扩展程序」→「Apps Script」
  2. 粘贴上述代码,保存项目(命名如SumByFirstColumn)
  3. 首次运行需授权脚本访问权限
  4. 运行processSheetData函数,即可自动完成数据合并并写入指定工作表

该方案无需指定固定键,自动适配子数组第一个元素作为分组依据,支持数据动态更新,直接对接Google Sheet的读写操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:20:17