需要帮助修改数据移动脚本

Need help modifying a data moving script

我有一个 scipt 可以在单元格被编辑时移动数据并且它工作得很好。

问题是我想将脚本的 getlastrow 部分修改到第二列(B 列),因为我在目标 sheet 的 A 列中有数据。

我试图用括号修改 getlast 行。 getlastrow(1, 2) 并且我还尝试添加另一个“函数”,它指定我想将它移动到的第二列,但我很确定我把它放在了脚本的错误部分。

这是脚本:

function ForecastJa1(e) {
  //e.source.toast("Entry");
  //console.log(JSON.stringify(e));
  const sh=e.range.getSheet();
  if(sh.getName()=="Casebuilder" && e.range.columnStart==13 && e.value=="Ja") {
    const tsh=e.source.getSheetByName('A');
    const nr=tsh.getLastRow();
    sh.getRange(e.range.rowStart,4,1,1).moveTo(tsh.getRange(nr,12,1,1));
    sh.getRange(e.range.rowStart,8,1,1).moveTo(tsh.getRange(nr,14,1,1));
    sh.getRange(e.range.rowStart,1,1,3).moveTo(tsh.getRange(nr,2,1,3));
    sh.getRange(e.range.rowStart,11,1,1).moveTo(tsh.getRange(nr,16,1,1));
    sh.clearcontent(e.range.rowStart);
  }
}

建议

也许您可以尝试使用类似 answered post 中的这种简单方法。您可以尝试以下经过调整的脚本:

示例调整脚本:

function ForecastJa1(e) {
  //e.source.toast("Entry");
  //console.log(JSON.stringify(e));
  const sh=e.range.getSheet();
  if(sh.getName()=="Casebuilder" && e.range.columnStart==13 && e.value=="Ja") {
    const tsh=e.source.getSheetByName('A');

    //Get Last Row of Column B on sheet `A`
    var Direction=SpreadsheetApp.Direction;
    var nr =tsh.getRange("B"+(tsh.getLastRow()+1)).getNextDataCell(Direction.UP).getRow() + 1;

    sh.getRange(e.range.rowStart,4,1,1).moveTo(tsh.getRange(nr,12,1,1));
    sh.getRange(e.range.rowStart,8,1,1).moveTo(tsh.getRange(nr,14,1,1));
    sh.getRange(e.range.rowStart,1,1,3).moveTo(tsh.getRange(nr,2,1,3));
    sh.getRange(e.range.rowStart,11,1,1).moveTo(tsh.getRange(nr,16,1,1));
    sh.clearcontent(e.range.rowStart);
  }
}

快速测试:

  • 脚本测试:

  • 样本Sheet:

  • 记录结果: