通过反复试验学习脚本。请原谅问题中可能的无知。我希望脚本将活动表中的特定范围(而不是整个行)移动到活动表中另一个范围的上方。我希望此操作仅在H列中的文本为“ C”时进行编辑。到目前为止,我运行的脚本没有错误,但是不会影响任何更改。另外,我希望不仅在第4行而且在第4-18行都发生同样的事情。我只是要复制成功的行多次并为每个行更新范围,但是我确定有更好的方法吗?
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var rangetoWatch = ("F4:I4");
var columnNumberToWatch = 8;
var valueToWatch = "C";
if (sheet.getName() == sheet && sheet.getRange() == range.getColumn() == columnNumberToWatch && rangetoWatch.getValue() == valueToWatch) {
sheet.getRange("F20:I").moveTo(sheet.getRange("F21"));
sheet.getRange("F4:I4").moveTo(sheet.getRange("F20:I20"));
}
}
答案 0 :(得分:1)
以防将来有人偶然发现此线程...我终于弄清楚了我要完成的工作。下面是一个示例脚本。
function movedown(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var row = range.getRow();
var mini = sheet.getRange(row, 1, 1, 3);
var columnNumberToWatch = 3;
var valueToWatch = "C";
if (range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
sheet.getRange("A15:C").moveTo(sheet.getRange("A16"));
sheet.getRange(row, 1, 1, 3).copyTo(sheet.getRange("A15:C15"));
sheet.getRange(row, 1, 1, 3).clear({contentsOnly:true});
}
}
答案 1 :(得分:0)
我想这就是你想要的。但是我发现您的解释不是很清楚。
function onEdit(e) {
var sheet=e.range.getSheet();
//next line not required if you want it to happen on all sheets
if(sheet.getName()!='SomeSheetName'){return;}//keep the process from only happening on one sheet
if(e.range.rowStart>=4 && e.range.rowStart<=18 && e.range.columnStart==8 && e.value=='C') {
sheet.getRange(20,6,sheet.getLastRow(),4).moveTo(sheet.getRange(21,6));
sheet.getRange(e.range.rowStart,6,1,4).moveTo(sheet.getRange(20,6,1,4));
}
}