移动范围的脚本没有显示错误但没有执行

时间:2019-04-09 18:24:24

标签: google-apps-script google-sheets

通过反复试验学习脚本。请原谅问题中可能的无知。我希望脚本将活动表中的特定范围(而不是整个行)移动到活动表中另一个范围的上方。我希望此操作仅在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"));

 }

}

2 个答案:

答案 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));
  }
}