2016-08-04 2 views
1

Я пытаюсь изменить значение ячейки на основе изменения цвета ... Когда я меняю цвет в ячейке, ничего не происходит. Текст для ячейки не задан.Таблицы Google: динамически изменять значение в активной ячейке?

function createSpreadsheetEditTrigger() { 
    var ss = SpreadsheetApp.getActive(); 
    ScriptApp.newTrigger(status) 
     .forSpreadsheet(ss) 
     .onEdit() 
     .create();  
} 

function status() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var cell = sheet.getActiveCell(); // Returns the active cell 

    var currentColor = cell.getBackgroundColor(); 

    switch(true) { 
    case currentColor === '#ffdc32': 
     cell.setValue('IN PROGRESS'); 
     break; 

    case currentColor === 'green': 
     cell.setValue('COMPLETED'); 
     break; 

    case currentColor === 'red': 
     cell.setValue('ERRORS'); 
     break; 

    } 

} 
+0

Вы хотите установить значение ячейки на основе цвета? Если да, то что произойдет, когда вы попробуете свой код? Это похоже на отличную отправную точку, без участия. –

+0

@DouglasGaskell - Когда я меняю цвет, ничего не происходит. Текст для ячейки не задан. – sbaden

+0

Возможно, вы должны включить эту деталь в свой вопрос. Вы настроили триггер 'onEdit' для этой функции? –

ответ

1

Я попытался это и обратили внимание на две вещи. Во-первых, вы должны использовать шестнадцатеричный код для цвета вместо имени, т. Е. #ff0000 вместо red. Кроме того, кажется, что изменение цвета фона ячейки не считается редактированием. Поэтому, если вы измените цвет ячейки, введите в нее что-нибудь (даже одно пространство будет делать), после выхода из ячейки текст изменится на то, что вы хотите. Следующие работы для меня - я использовал один onEdit(e) вместо полного на спусковой крючок, и сделал переключатель на основе цвета:

function onEdit(e){ 
    var cell = e.source.getActiveSheet().getActiveCell(); 

    var currentColor = cell.getBackgroundColor(); 

    switch (currentColor){ 

    case '#ffdc32': 
     cell.setValue('IN PROGRESS'); 
     break; 

    case '#00ff00': 
     cell.setValue('COMPLETED'); 
     break; 

    case '#ff0000': 
     cell.setValue('ERRORS'); 
     break; 

    default: 
     break; 
    } 
} 
1

Чтобы активировать функцию, вам необходимо установить триггер, простой или устанавливаемый.

Самый простой способ - переименовать свою функцию на onEdit, это автоматически будет действовать как простой триггер.

В качестве альтернативы, вы можете установить устанавливаемая триггер, перейдя в меню Resources и Current Projects Triggers, нажмите no triggers setup... текст, а затем выберите функцию, выберите из таблицы, а затем выберите на редактирование, как на картинке ниже.

enter image description here

enter image description here

Simple Triggers Documentation

Installable Triggers Documentation

+0

Все еще не работает. Я даже пытался добавить код в свой оригинальный код ... См. Мой оригинальный код (отредактирован). – sbaden

+0

@sbaden О, я вижу. Вы используете функцию в ячейке. Вы не можете установить значение ячейки, из которой выполняется функция, вам нужно вернуть значение. Я отредактирую свой пост, когда вернусь на свой компьютер. –

+0

Я удалил функцию в ячейке, когда создал триггер. Триггер должен работать для любой ячейки, которая редактируется правильно? Моя функция получает активную ячейку. – sbaden

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

  • Нет связанных вопросов^_^