Скрипт для перемещения диапазона показывает без ошибок, но не выполняется - PullRequest
0 голосов
/ 09 апреля 2019

Изучение скриптов методом проб и ошибок. Пожалуйста, прости вероятное невежество в вопросе. Я хочу, чтобы скрипт перемещал определенный диапазон (но не всю строку) на активном листе, чтобы он располагался выше другого диапазона на активном листе. Я хочу, чтобы этот шаг происходил после редактирования и только тогда, когда текст в столбце 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 ]

1 голос
/ 18 апреля 2019

на случай, если кто-нибудь натолкнется на эту тему в будущем ... я наконец понял, чего я пытался достичь. пример сценария ниже.

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

  }
  }
0 голосов
/ 09 апреля 2019

Я думаю, это то, что вы хотите. Но я не нашел ваше объяснение очень ясным.

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));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...