2016-04-11 4 views
1

Я уже давно работаю над этим скриптом в скрипте Google Apps и думаю, что у меня это почти выяснено. Я мог бы использовать еще пару глаз, хотя он еще не работал до завершения.Очистить значение ячейки смежной ячейки, если значение является датой

То, что я пытаюсь сделать:

Я работаю на листе дела с предварительными и фактическими сроками. Эти две даты находятся в соседних столбцах. Как только «фактическая» дата будет заполнена в его ячейке, мне бы хотелось, чтобы «предварительная» дата была удалена.

Вот мой сценарий до сих пор:

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var range = sheet.getRange('F4:F'); 
    var range2 = sheet.getRange('E4:E'); 
    var rule = range.getDataValidation(); 
    if (rule != null) { 
    var criteria = rule.getCriteriaType(); 
    var args = rule.getCriteriaValues(); 
    var clear = range2.clear({validationsOnly: false}); 
    } 
} 

Что мне нужно сделать, чтобы получить этот скрипт работает?

ответ

0

Похоже, вы хотите удалить значение в столбце E, если столбец F был заполнен. Если это так, я не вижу необходимости иметь дело с правилами проверки данных. Следующий скрипт проверяет, что отредактированная ячейка находится в столбце F, row> = 4 и что новое значение в ячейке является датой. Если эти условия сохраняются, он очищает ячейку влево (используя offset).

function onEdit(e) { 
    if (e.range.getColumn() == 6 && e.range.getRow() >= 4) { 
    if (e.range.getValue() instanceof Date) { 
     e.range.offset(0, -1).clear(); 
    } 
    } 
} 

Примечание: этот сценарий использует event object передается onEdit функции. Интересно, что его свойство «значение» оказалось не полезным здесь, поскольку оно не является объектом даты, даже когда пользователь вводит дату. Это то, что я использую вместо e.range.getValue().

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