Google Apps Script脚本优化:如何为匹配行同时插入两列值?
解决方法
原脚本已能准确定位匹配行并设置B列值,要给同一行M列设置value2,只需在找到匹配的C列单元格后,同步获取对应行的M列范围并批量赋值即可。
修改后的脚本如下:
function insert(){ var mSheet = SpreadsheetApp.openById('1rAQ0t--PPK0-wovqdc') var ss = SpreadsheetApp.getActive().getSheetByName('Sheet1'); var searchText = ss.getRange('A1').getValue() var value1 = ss.getRange('B1').getValue() var value2 = ss.getRange('C1').getValue() var sheet = mSheet.getSheetByName('Data'); if(searchText !== ''){ // 获取所有匹配C列的单元格 var matchedRanges = sheet.getRange('C1:C') .createTextFinder(searchText) .matchEntireCell(true) .findAll(); // 生成B列范围列表并设置value1 var bRangeList = matchedRanges.map(r => r.offset(0, -1).getA1Notation()); sheet.getRangeList(bRangeList).setValue(value1); // 生成M列范围列表并设置value2(C列到M列偏移10列) var mRangeList = matchedRanges.map(r => r.offset(0, 10).getA1Notation()); sheet.getRangeList(mRangeList).setValue(value2); console.log(searchText, value1, value2, bRangeList, mRangeList); } }
关键修改说明:
- 先缓存所有匹配的C列单元格,避免重复执行查找逻辑提升效率
- 利用
offset(0, 10)从C列单元格偏移到同一行的M列(C为第3列,M为第13列,差值为10) - 单独生成M列的范围列表,批量设置value2值
内容的提问来源于stack exchange,提问作者Yvan L
相关产品推荐
相关产品推荐

