如何同时忽略for循环中的空白和非空白值

时间:2019-05-03 16:55:46

标签: google-apps-script

我有一个脚本,当“列X”不为空时,会为“列Y”加时间戳。我正在尝试添加一种偶然性,如果脚本缺少时间戳,则该脚本将仅使时间戳“ 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 个答案:

答案 0 :(得分:1)

尝试一下:

我对此进行了测试,并且不会覆盖旧的时间戳。

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