需要帮助修改数据移动脚本
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:
- 记录结果:
我有一个 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:
- 记录结果: