Мне нужно поставить 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);
}
}
Может я смогу сделать это без скриптов? Или вы можете порекомендовать мне что-то другое?