Как игнорировать пустые и непустые значения в цикле for одновременно - PullRequest
0 голосов
/ 03 мая 2019

У меня есть скрипт, который ставит отметки времени «Столбец Y», когда «Столбец X» не пуст. Я пытаюсь добавить непредвиденное обстоятельство, которое делает сценарий только отметкой времени «Столбец Y», если отсутствует отметка времени. В настоящее время скрипт просто перезапишет существующие метки времени.

function markComplete() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');
  var startingRow = 2;
  var maxRow = s.getLastRow();
  var data = s.getRange(startingRow, 1, maxRow, 29).getValues();
  var dateSent = new Date();

  for (var i = 0; i < data.length; ++i) {
   var row = data[i];
   var employee = row[23];
   var timestamp = row[29];


  if (employee != '') {
    s.getRange(i+2,29).setValue(dateSent);
    }
  }
  }

Я попытался изменить оператор if на if (employee != '' && timestamp == ''), но это просто заставляет скрипт ничего не делать.

1 Ответ

1 голос
/ 03 мая 2019

Попробуйте это:

Я проверил это, и оно не перезаписывает старые метки времени.

function runOne() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  var vA=rg.getValues();
  for (var i=0;i<vA.length;i++) {
    if(vA[i][23] && !vA[i][28]) {//columns x and y
      sh.getRange(i+2,29).setValue(Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "E MMM dd, yyyy HH:mm:ss"));//column y
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...