Как поставить подсказку в приложениях гугл? - PullRequest
0 голосов
/ 09 сентября 2018

Мне нужно поставить Ui.prompt перед onEdit для проверки пользователей. Я хочу сделать onEdit только после того, как пользователь введет правильный PIN-код. Я знаю как, но я не знаю где? И что мне нужно вставить в onEdit, чтобы автоматически использовать первый "elseif"?

function IFA(arr, val, ret) {
  if (typeof arr.map != "function") {
    if (arr == val) return val;
    else return ret;
  }
  var result = [].concat.apply([], arr).filter(function(v) {
    return v != val;
  });
  if (result.length == 0) {
    return val;
  }
  return ret;
}
function TrackedColumnJob(trackedSheetName, trackedColumn, trackedKeyword, dateColumn) {
  this.trackedKeyword = trackedKeyword;
  this.trackedColumn = trackedColumn;
  this.dateColumn = dateColumn;
  this.trackedSheetName = trackedSheetName;
}
function letterToColumn(letter) {
  var column = 0,
    length = letter.length;
  for (var i = 0; i < length; i++) {
    column += (letter.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
  }
  return column;
}
function checkTrackedColumn(job, e) {
  var range = e.range;
  var sheet = e.range.getSheet();
  if (sheet.getName() != job.trackedSheetName) return;
  const trackedColumnIndex = letterToColumn(job.trackedColumn);
  const dateColumnIndex = letterToColumn(job.dateColumn);
  if (range.getColumn() == trackedColumnIndex && range.getNumColumns() == 1) {
    for (i = range.getRow(); i <= range.getLastRow(); i++) {
      var s = sheet.getRange(i, trackedColumnIndex);
      var r = sheet.getRange(i, dateColumnIndex);

      if (
        s.getValue() == job.trackedKeyword ||
        (job.trackedKeyword == null && !s.isBlank() && s.getValue() != "-")
      ) {
        const nowDate = new Date();
        const dateString =
          nowDate.getFullYear() +
          "-" +
          (nowDate.getMonth() + 1) +
          "-" +
          nowDate.getDate();
        r.setValue(dateString);
      } else if (
        !r.isBlank() &&
        (r.getValue() != null || r.getValue() != "") &&
        ((!s.isBlank() && s.getValue() != job.trackedkeyword) ||
          (s.isBlank() || s.getValue() == "" || s.getValue() == null))
      ) {
        s.setValue("Принято");
      } else if (
        !r.isBlank() &&
        ((job.trackedKeyword == null && (s.isBlank() || s.getValue() == "-")) ||
          (job.trackedKeyword != null &&
            s.getValue() != job.trackedKeyword &&
            r.isBlank()))
      ) {
        s.setValue("");
      }
    }
  }
}
function onEdit(e) {
  var jobs = [new TrackedColumnJob("Работы", "D", "Принято", "G")];

  for each (job in jobs) {
    checkTrackedColumn(job, e);
  }
}

Может я смогу сделать это без скриптов? Или вы можете порекомендовать мне что-то другое?

...