Суть проблемы спрашивающего заключается в том, что «не все достаточно осторожны, чтобы убедиться, что время окончания их события наступает после времени начала их события. Это приводит к тому, что код прерывается и не выполняется из-за неправильного времени (вы не можете добавитьсобытие в Календаре Google, если ваше Время окончания предшествует времени начала. "
На первый взгляд, это не проблема Google Sheets, а скорее условная логика в Jotform. К счастью, JotForm может справиться с этим. Условия для дат начала и окончания объясняет, как именно редактировать JotForm, чтобы обеспечить синхронизацию даты начала и окончания, однако, возможно, что спрашивающий не имеет возможности редактироватьJotForm, так что до тех пор мы сосредоточимся на ответных данных, поступающих в логике Google Sheets.
Приведенный ниже код является выдержкой, вставляемой после начала цикла и до инициализации остальных переменных события. Это позволяеткод для оценки даты начала и окончания и продолжения обработки ONLY если дата начала раньше даты окончания.
Я добавил три if
оператора и переменная mismatch
.
mismatch
инициализируется в начале каждого новогострока события со значением ноль.В случае, если сравнение дат выдвигает на первый план проблему, переменной присваивается значение 1. Это позволяет коду проверять различные ошибки в датах начала и окончания.Если после всего этого несоответствие не имеет значения 1, тогда обработка может продолжаться «как обычно», в противном случае код может перейти к следующему событию.
if #1
- проверяет, больше ли дата началачем дата окончания;если да, тогда выдайте предупреждение, установите новый фон и дайте несоответствие значению 1 (один).
if #2
- проверяет, равна ли дата начала дате окончания;если да, то выдайте предупреждение, установите новый фон и задайте для несоответствия значение 1 (один).
if #3
- проверяет, имеет ли несоответствие значение 1;если нет, то продолжить обработку;если да, вернитесь к следующему событию.
for (var i = 0; i < data.length; ++i) {
var mismatch = 0;
var row = data[i];
var sDate = new Date(row[2]); //Start date/time
var eDate = new Date(row[3]); //End date/time
Logger.log("Start = "+sDate+", end = "+eDate);
if ((sDate - eDate) >0){
// "start date is later than end data");
SpreadsheetApp.getUi().alert("AUDIT WARNING: Start date > end date. Script will NOT stop but this request marked in Red. ");
sheet.getRange(i+2,1,1,6).setBackground("red");
mismatch = 1;
}
if ((sDate - eDate) == 0){
// start date and end date are the same");
SpreadsheetApp.getUi().alert("AUDIT WARNING: Start date and end date are the same. Script will NOT stop but this request marked in Orange. ");
sheet.getRange(i+2,1,1,6).setBackground("darkorange");
mismatch = 1;
}
if (mismatch != 1){
//by definition, start date is less than end date.
// insert code to process
}
}
Этот снимок экрана показывает эффект обработки