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

App Script复制数据异常:需从A2行粘贴而非A3行的调整问询

问题解决:调整脚本让数据从A2行开始追加

你的脚本现在把数据粘到A3,核心原因是目标表「Name My Sheet Destiny」的A2行Q列有公式,getLastRow()会把带公式的行算作已占用行,导致lastrowB = sheetB.getLastRow()+1算出的结果是3。要改成从A2开始追加,我们得换个方式计算目标表的起始粘贴行——只看要粘贴数据的A-O列的实际数据行数,别被Q列的公式干扰。

修改后的完整脚本

const app      = SpreadsheetApp;
const ss       = app.getActiveSpreadsheet();
const sheet1   = ss.getSheetByName("Name My Sheet dataBase");
const lastrowD = sheet1.getLastRow();
const dados    = sheet1.getRange("A2:O" + lastrowD).getValues();
const ssB      = app.openById("ID My Sheet Destiny");
const sheetB   = ssB.getSheetByName("Name My Sheet Destiny");

// 统计A列非空单元格的数量(只算实际有数据的行)
const filledRowsInA = sheetB.getRange("A:A").getValues().filter(cell => cell[0] !== "").length;
// 如果A列只有表头(A1),就从A2开始;否则从现有数据的下一行开始
const startRow = filledRowsInA === 1 ? 2 : filledRowsInA + 1;

// 用dados.length来确定粘贴行数,比原脚本的lastrowD-1更稳妥
sheetB.getRange(startRow, 1, dados.length, 15).setValues(dados);

核心修改点

  • 重新计算起始粘贴行:通过过滤A列的非空单元格,避开Q列公式对getLastRow()的影响,确保第一次运行时能定位到A2。
  • 优化粘贴行数:改用dados.length代替lastrowD - 1,如果原表没有数据,不会出现无效的0行数粘贴,避免报错。

这样改完后,第一次运行数据会准确放到A2,Q列的公式会自动计算该行的到期日期;之后每次运行,数据都会追加到现有数据的下一行,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:17:38