javascript - 合并应用程序脚本中的重复行
解决方案
这是脚本:
const HDR = 1 // header height
const GROUP_COL = 1 // in which column is the grouping value
function onEdit(e){
// we are interested only if value is not empty and the content of colum GROUP_COL has been changed
if(!e.value || e.value===e.oldValue || e.range.columnStart!==GROUP_COL || e.range.rowStart<=HDR){
return
}
const sh = SpreadsheetApp.getActiveSheet()
const values = sh.getDataRange().getValues().slice(HDR-1)
const existingRows = values.map((r,i)=>({ row:HDR+i, cells:r, found:r[GROUP_COL-1]==e.value })).filter(x=>x.found)
console.log(existingRows)
if(existingRows.length===0){
return
}
const destRange = sh.getRange(e.range.rowStart,1,1,existingRows[0].cells.length)
const destRow = destRange.getValues()[0]
// merge content into the new row
existingRows.forEach(er=>{
er.cells.forEach((c,i)=>{
if(i===GROUP_COL-1 || er.row===e.range.rowStart){
return
}
destRow[i] = (destRow[i] + "\n" + er.cells[i]).trim()
})
})
destRange.setValues([destRow])
// delete extra rows
existingRows.forEach((er,i)=>{
if(er.row!==e.range.rowStart){
sh.deleteRow(er.row-i)
}
})
}
推荐阅读
- c++ - 返回值的 const 引用是什么?
- c - SELECTION SORT - 我自己的排序版本
- javascript - 自定义光标不工作 HTA(HTML 应用程序)
- uuid - 在 Rule Designer 工作区中同步新规则项目(重命名现有项目)时出现 UUID 问题
- sql - 5 列,但给出了 6 个值
- python - 如何在谷歌驱动器中使用制表符阅读 PDF 文件
- node.js - node.js - 错误:SQLITE_ERROR:靠近“用户”:语法错误
- r - 计算 MACD 和错误处理时,数字超出有效范围
- svg - SVG 蒙版未在页面上呈现
- r - 如何在循环中解决此错误:“替换有 30 行,数据有 29”?