Google Apps Script优化:自动获取列唯一值替代手动输入筛选
自动提取唯一值拆分工作表的优化方案
以下是修改后的代码,可自动从RawData工作表第4列(Product Type)提取唯一值,替代手动输入的筛选列表:
function getSubsetDataComplaints() { const shName = "RawData"; const ss = SpreadsheetApp.getActiveSpreadsheet(); const [headers, ...values] = ss.getSheetByName(shName).getDataRange().getValues(); // 自动提取第4列(索引3)的非空唯一值作为筛选列表 const list = [...new Set(values.map(row => row[3]).filter(val => val !== ''))]; list.forEach(elem => { // 精确匹配Product Type(替代原includes,避免模糊匹配错误) const result = [headers, ...values.filter(row => row[3] === elem)]; const sheet = ss.insertSheet(elem); sheet.getRange(1, 1, result.length, result[0].length).setValues(result); }); }
关键改动说明:
- 自动提取唯一值:通过
values.map(row => row[3])提取所有Product Type值,再用Set自动去重,最后转成数组。加入filter(val => val !== '')过滤空值,防止生成名称为空的无效工作表。 - 精确匹配优化:将原代码的
r[3].includes(elem)改为row[3] === elem,因为筛选值本身就是从原数据中提取的唯一值,精确匹配更准确,避免类似"Food"与"Fast Food"这类模糊匹配的错误。
内容的提问来源于stack exchange,提问作者scriptnewb
相关产品推荐
相关产品推荐

