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

为什么Google Apps Script归档全量行而非匹配指定条件的行?

问题原因
  • 索引偏差:Google Apps Script的getValues()方法返回的二维数组为0起始索引,你当前设置的columnNumberOfValuesToTestFor = 9实际对应表格的第10列,如果你的「Completed By」列是第9列,该参数值应为8,否则会取错列值,导致匹配规则失效。
  • 匹配逻辑错误:原有valuesToTestFor.indexOf(status) !== -1的判断存在漏洞,空字符串在任意字符串中的indexOf返回值恒为0,因此即使目标列单元格为空也会触发匹配,导致所有行都被归档。
修改方案

如果你仅需要匹配「Completed By」列为非空白的行,不需要多值匹配逻辑,可以直接调整匹配规则即可,修改后的完整代码如下:

function archive() {
  var arrayOfRowsToArchive,columnNumberOfValuesToTestFor,data,i,lastColumn,L,numberOfRowsToArchive,numRows,
      range,rowsToDelete,ss,sheet,sheetName,sheetToMoveTheRowTo,startRow,status,targetSheet,thisRowsData;

  //USER INPUT:
  
  startRow = 2; //数据起始行号,排除表头行
  columnNumberOfValuesToTestFor = 8; //对应表格的第9列,如果你目标列序号不同,值为「列序号-1」即可
  sheetName = "Form Responses 1"; //待归档数据所在的工作表名称
  sheetToMoveTheRowTo = "Sheet7"; //归档目标工作表名称
  
  //END OF USER INPUT
  
  ss = SpreadsheetApp.getActiveSpreadsheet();
  sheet = ss.getSheetByName(sheetName);
  
  numRows = sheet.getLastRow();
  lastColumn = sheet.getLastColumn();

  arrayOfRowsToArchive = [];
  rowsToDelete = [];

  data = sheet.getRange(startRow, 1, numRows - startRow, lastColumn).getValues();
  
  L = data.length;
  
  for (i=0; i<L; i++) {
    status = data[i][columnNumberOfValuesToTestFor];
    
    // 仅当目标列非空(排除全空格内容)时触发归档
    if (status && status.toString().trim() !== '') {
      thisRowsData = data[i];
      arrayOfRowsToArchive.push(thisRowsData);
      rowsToDelete.push(i+startRow);
    }
  }

  if (arrayOfRowsToArchive) {
    numberOfRowsToArchive = arrayOfRowsToArchive.length;
    
    if (!numberOfRowsToArchive) {
      return;
    }
  } else {
    Logger.log('arrayOfRowsToArchive 存在异常');
  }
  
  targetSheet = ss.getSheetByName(sheetToMoveTheRowTo);
  targetSheet.getRange(targetSheet.getLastRow()+1, 1, numberOfRowsToArchive, arrayOfRowsToArchive[0].length)
    .setValues(arrayOfRowsToArchive);
  
  // 从下往上删除行避免索引混乱
  for (i=rowsToDelete.length;i>0;i--) {
    sheet.deleteRow(rowsToDelete[i-1]);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:57:01