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

如何修改Google Apps Script脚本从第16行开始匹配查找?

修改后的脚本
function myFunction() {
  var lock = LockService.getDocumentLock();
  lock.waitLock(20000);
  SpreadsheetApp.flush();
  lock.releaseLock();
  
  // 源表格
  var sourceSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = sourceSpreadSheet.getSheets()[0];

  // 目标表格
  var destinationSpreadSheet = SpreadsheetApp.openById('SheetID');
  var destSheet = destinationSpreadSheet.getSheets()[0]; 

  var values = srcSheet.getRange("B2:B3").getValues().reduce(function(a, b) {
    return a.concat(b);
  });
  var partNum = values[0];
  var row;

  // 从第16行开始查找A列的匹配项
  var lastRow = destSheet.getLastRow();
  if (lastRow >= 16) {
    // 仅获取第16行及以后的A列数据
    var searchRangeValues = destSheet.getRange(16, 1, lastRow - 15, 1).getValues();
    searchRangeValues.forEach(function(r, i) {
      if (r[0] === partNum) {
        // 计算实际行号:索引i对应第16行开始的偏移量
        row = 16 + i;
      }
    });
  }

  // 未找到匹配项则追加到表格末尾
  row = row ? row : destSheet.getLastRow() + 1;
  var data = destSheet.getRange(row, 1, 1, 2).getValues()[0].map(function (el, ind){
    return values[ind] ? values[ind] : el;
  });

  var statusValue = srcSheet.getRange("B2").getValue(); 
  if (statusValue != '') {                       
    destSheet.getRange(row, 1, 1, 2).setValues([data]);   
    srcSheet.getRange("B2:B3").clearContent();
  }
}
关键修改说明
  • 限定查找范围:原脚本遍历整个表格A列,现在改为仅从第16行开始查找,通过destSheet.getRange(16, 1, lastRow - 15, 1)获取目标区域,完全避开前15行。
  • 修正行号计算:遍历查找范围时,索引i对应第16行的偏移量,实际行号用16 + i计算,确保匹配到的行都是16行及以后的内容。
  • 边界处理:增加if (lastRow >= 16)判断,若表格总行数不足16行,直接跳过查找逻辑,避免出现范围错误。
  • 优化状态判断:将原脚本中取B2:B3的值改为直接取B2的值,因为B2是搜索/添加的核心值,判断更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:34:57