使用AppSript的动态分组功能可以根据特定条件将数据分组,并将结果呈现在Google Sheets中。
以下是一个示例代码,它将根据姓名分组并计算每个组的总金额:
function dynamicGrouping() { var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); var dataRange = sheet.getDataRange();
// 根据姓名排序 dataRange.sort({ column: 1, ascending: true });
// 获取数据的总行数和总列数 var numRows = dataRange.getNumRows(); var numCols = dataRange.getNumColumns(); var dataValues = dataRange.getValues();
// 定义一个变量来存储每个组的名称 var groupNames = [];
// 将数据按照姓名分组并计算每组的总金额 var groupedData = dataValues.reduce(function(groups, row) { var groupName = row[0]; if (groupNames.indexOf(groupName) === -1) { groupNames.push(groupName); groups[groupName] = []; } groups[groupName].push(row[1]); return groups; }, {});
// 将每个组的总金额添加到新的数组中 var results = []; for (var i = 0; i < groupNames.length; i++) { var groupName = groupNames[i]; var groupTotal = groupedData[groupName].reduce(function(sum, amount) { return sum + amount; }, 0); results.push([groupName, groupTotal]); }
// 将结果更新到Google Sheets中的一个新的表格中 var resultSheet = SpreadsheetApp.getActive().insertSheet('Result'); var numResultsRows = results.length; var numResultsCols = results[0].length; resultSheet.getRange(1, 1, numResultsRows, numResultsCols).setValues(results); }
运行该函数后,将会得到一个名为“Result”的新表格,其中包含了按照姓名分组的金额总和。