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

Google Apps Script移动脚本无法定位B列最后一行求助

问题解决:将行粘贴到Pipe表的B列起始位置

原脚本使用appendRow会默认从A列插入整行,后续的insertCells操作逻辑有误,导致无法实现从B列开始粘贴的需求。以下是修正后的实现方案:

修正思路

  1. 舍弃appendRow默认从A列插入的逻辑,通过getLastRow_函数准确获取Pipe表B列的最后非空行
  2. 以该行的下一行、B列(第2列)为起始位置,粘贴需要移动的行数据
  3. 保留原有的日期判断与源行删除逻辑,确保核心功能正常

完整修正脚本

function MoveAll() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSh = ss.getSheetByName("Pipe");
  const sheets = ["Resting","Bokad","Återkomster"];
  const dateCol = {
    "Resting": 20,
    "Bokad": 15,
    "Återkomster": 14
  }; 

  for (const sheetName of sheets) {
    const sourceSh = ss.getSheetByName(sheetName);
    const sheetData = sourceSh.getDataRange().getValues();

    // 从后往前遍历避免删除行导致的索引偏移
    for (let i = sheetData.length - 1; i >= 0; i--) {
      const dateCell = sheetData[i][dateCol[sheetName] - 1];
      if (isValidDate(dateCell)) {
        const today = new Date();
        const testDate = new Date(dateCell);
        
        if (testDate <= today) {
          // 获取B列最后非空行,下一行作为插入起始行
          const targetStartRow = getLastRow_(targetSh, 2) + 1;
          // 从B列(第2列)开始粘贴当前行数据
          targetSh.getRange(targetStartRow, 2, 1, sheetData[i].length).setValues([sheetData[i]]);
          // 删除源工作表对应行
          sourceSh.deleteRow(i + 1);
        }
      }
    }
  }
}

function getLastRow_(sheet, columnNumber) {
  // version 1.5, written by --Hyde, 4 April 2021
  const values = (
    columnNumber
      ? sheet.getRange(1, columnNumber, sheet.getLastRow() || 1, 1)
      : sheet.getDataRange()
  ).getDisplayValues();
  let row = values.length - 1;
  while (row && !values[row].join('')) row--;
  return row + 1;
}

// 日期验证函数(确保脚本完整性)
function isValidDate(date) {
  return date instanceof Date && !isNaN(date);
}

关键修改说明

  • 移除了appendRow和insertCells的错误组合逻辑,改用getRange直接指定B列起始位置插入数据
  • 通过getLastRow_(targetSh, 2)精准定位B列的最后非空行,保证每次插入都从B列最新的空白行开始
  • 优化变量命名(如test改为testDate),提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:21