2014-09-30 3 views
0

У меня есть 2 колонки 'StartDate' и 'EndDate'Google Apps Script [Spreadsheet Date]

Можно сделать проверку, чтобы убедиться, что 'EndDate' не может быть раньше, чем 'StartDate', наоборот? Я не знаю, нужно ли проверять правильность таблицы или через скрипт.

ответ

0

Вы можете легко сделать это, используя встроенную функцию проверки данных таблицы (меню Data> Validation). Используя валидацию «Пользовательская формула» и просто введите =B1>A1 (предполагая, что ваши 2 столбца - 1-й 2).

Или сделайте это по сценарию, используя триггер onEdit, что также легко, но не так сильно, как указано выше.

--edit

Если вы также должны проверить, если ячейка является дата, вы можете использовать следующую формулу в качестве проверки данных:

=AND(DateValue(B1),B1>A1) 

Это будет выглядеть следующим образом, используя onEdit триггер :

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() !== 'Sheet1') return; //check if it's the sheet we want to monitor 
    var r = s.getActiveRange(); 
    if(r.getColumn() !== 2) return; //check if it's the column we're interested 
    var v = r.getValue(); 
    if(typeof v !== 'object') { 
    r.setValue(''); 
    return SpreadsheetApp.getUi().alert('Enter a valid date!'); 
    } 
    var vA = r.offset(0, -1).getValue(); 
    if(typeof vA === 'object') { 
    if(vA.getTime() >= v.getTime()) { 
     r.setValue(''); 
     return SpreadsheetApp.getUi().alert('Enter a date bigger than start date!'); 
    } 
    } //what to do if there is no date in column A? 
} 

Обратите внимание, что этот код не проверяет, если дата начала изменяется, и, следовательно, она может быть изменена впоследствии значения больше, чем дата окончания. Но если вы пойдете с этим программным решением, вы сможете взять его здесь.

+0

Спасибо! Не знал, что это так просто! – chopz

+0

Привет, У меня уже есть валидация, которая гарантирует, что дата является действительной датой. не может добавить другое новое правило. Как это можно сделать с помощью onEdit триггера? – chopz

+0

еще раз спасибо! For = B1> A1, как я могу проверить весь столбец вместо одной ячейки? – chopz

0

Вы также можете преобразовать даты в целые числа и сравнить значения. if (int (enddate-startdate < 0, сделайте что-нибудь, сделайте что-нибудь еще)

Смежные вопросы