Сценарий - добавление строки внизу на основе условных критериев - PullRequest
0 голосов
/ 26 июня 2019

Уважаемые оракулы сценария,

Я пытался заставить какой-нибудь скрипт автоматически добавить строку ниже той, которую я ввел, но только если баланс равен нулю, НО. Если оно равно нулю, я не хочу добавлять еще одну строку.

Я попробовал несколько сценариев, осмотрел сайт и пробовал их с помощью триггеров при редактировании, но они просто добавляют строку, несмотря на то, что я пытался указать условие для их запуска.

function onEdit(event) {
  var eventRange = event.range;
  if (eventRange.getColumn() == 12) { // 12 = column of input that triggers it

    var columnXRange = 
 SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 13, 
 eventRange.getNumRows(), 12); /// column number it affects

    var values = columnXRange.getValues();

    for (var i = 0; i < values.length; i++) {
      if (!values[i][0]) {  // If cell isn't empty
       values[i][0] = '0';
      }
    }
        columnXRange.setValues(values);
       }
    }
    function Clear(e){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('AGL');
    sheet.getRange('N4:N').clearContent();
    }

      function AddRow() {
     var sheet = SpreadsheetApp.getActiveSheet();
     if (sheet.getName() == "AGL") {
       var activeCell = sheet.getActiveCell();
       if (activeCell.getColumn() == 13) {
      var Balance = sheet.getRange('N:N');
      if (Balance != '0'); {
      sheet.insertRowAfter(activeCell.getRow());
      }
    }
  }
}

В столбце N у меня есть формула массива, вычисляющая баланс запасов на складе и запасов.

В столбце M у меня работает скрипт, который добавляет 0, когда что-то помещается в столбец L. У меня также есть скрипт, который стирает вывод формулы массива, чтобы они не запутывались друг с другом .

Я хотел бы, чтобы при редактировании строки, когда я помещал фигуру в столбец L или M и если баланс в столбце N больше 0, я хотел бы добавить новую строку внизу. (Если вы можете заставить его добавлять значения из A & B, это будет бонусом, но не суетой.) Если баланс равен 0, я не хочу добавлять строки.

В настоящее время я смешал результаты, добавляя строку каждый раз, когда редактирую столбец N.

1 Ответ

1 голос
/ 26 июня 2019

Требования:

Добавить строку, когда столбцы L или M редактируются, а значение в столбце N больше 0 (и, если возможно, добавить значения из столбцов A и B в новую строку).


Решение:

Это почти все, что вам нужно для вашего сценария. Я добавил комментарии, чтобы объяснить, что делает каждая часть, поэтому за ней должно быть довольно легко следить.

function onEdit(e) {
  //define edited sheet, row number and column number
  var sh = e.source.getActiveSheet();
  var row = e.range.getRow();
  var col = e.range.getColumn();

  //get value of column N for edited row
  var val = sh.getRange(row, 14).getValue(); 

  //if columns L or M are edited and column N is greater than 0
  if ((col === 12 || col === 13) === true && val > 0) {

    //insert row below edited row
    sh.insertRowAfter(row); 

    //get values of columns A and B of edited row
    var vals = sh.getRange(row, 1, 1, 2).getValues(); 

    //set values in columns A and B
    sh.getRange(row+1, 1, 1, 2).setValues(vals);
  }
}

Примечания:

Я не включил ни одну из ваших других функций, только добавив строку, вы можете включить их в эту функцию, если хотите.

Вы вообще не сможете запустить этот скрипт вручную (он потерпит неудачу в первой строке), он просто запустится автоматически при редактировании листа.


Ссылки:

  1. Объекты событий
  2. Таблица классов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...