Googlescript «если» вопрос - выполнить только одну из двух задач - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть операторы «else if», и мне нужно, чтобы они вызывались, только если предыдущее «if» не выполняется.Первое «если» (проверка статуса) работает отлично, вторая - «но», но «еще, если» выполняется каждый раз, потому что в таблице есть разные типы (A, B, C и т. Д.)

Правка: 1Новая строка должна быть добавлена, если нет открытого A;2. Если открыто более одного А - все должны быть закрыты;3. Игнорируйте все другие типы и добавляйте новую строку, только если не открыто As;

Вот мой код:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');
  var data = sheet.getRange(2,1,sheet.getLastRow(),2).getValues();
  var nextRow = SpreadsheetApp.getActiveSheet().getDataRange().getLastRow()+1;

  for (var i=0; i<data.length; i++){
    var row = data[i];
    var type = row[0];
    var status = row[1];

//check it always     
    if (status != 'close'){

//check first and if it's true don't do 'else if'      
       if (type == 'A') {
         sheet.getRange(i+2,2).setValue('close')
       }

//this should only be called if the previous 'if' is not true      
      else if (type != 'A' && type != ''){
        var values = [['A','open']];
        sheet.getRange("A"+nextRow+":B"+nextRow).setValues(values); 
      }
    }
  }
}

enter image description here

1 Ответ

0 голосов
/ 30 сентября 2019

Поток:

  • Перебрать все данные, чтобы найти «A: Открыть»
  • Если найдено во всех данных, просто закройте эту строку
  • else, добавьте новую строку: «A: Open»
  • Используйте булеву переменную (isThereASingleAOpen) для отслеживания A: Open found status

Пример сценария:

function closeAandAddOpenA() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');

  //Separate range and data
  var range = sheet.getRange(2, 1, sheet.getLastRow(), 2);
  var data = range.getValues();

  //Is there a A Open in the data? Let's assume there's none
  var isThereASingleAOpen = false;

  //Loop through data array
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var type = row[0];
    var status = row[1];

    //If status is != close and type == 'A'
    if (status != 'close' && type == 'A') {
      //Change current row status to close in the data array
      row[1] = 'close';
      //Oops We were wrong. There was a A open in the data
      isThereASingleAOpen = true;
    }
  } //Loop closed

  //Set the modified data back to the range
  //Batch  operations are faster
  range.setValues(data);

  //if there is NOT a single A open in all of data, Append a new line
  if (!isThereASingleAOpen) {
    sheet.appendRow(['A', 'Open']);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...