Использование скрипта Google Apps для изменения цвета ячейки (на основе vLookup)

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

Я могу установить цвет ячейки на основе содержимого ячейки, но я бы хотел, чтобы это значение ячейки искалось в статической таблице с двумя столбцами (в другом месте) и возвращалось смежное значение.

function onEdit(event) {

var ss = event.range.getSheet();

if (ss.getName() !== "Sheet2") return;

var changedCell = event.source.getActiveRange();
var c = event.value; 
var color = 'white'; 
var data=getRange('G1:H5').getValues();

for(i=0;i<data.length;i++){
if (data[i][0]==c){
  return data[i][1];
}
}

    switch (data[i][1]) {
        case "Math":
            color = "MediumSeaGreen";
            break;
        case "Science":
            color = "Orange";
            break;
        case "History":
            color = "DarkGray";
            break;
        case "English":
            color = "Gold";
            break;
        case "Spanish":
            color = "LightCoral";
            break;
        default:
            break;
    }

changedCell.setBackground(color);  
}

Изображение электронной таблицы


person Indianagreg    schedule 18.08.2019    source источник
comment
Это if (data[i][0]==c){ return data[i][1]; } завершает работу функции. И переключатель находится вне цикла. Я думаю, вы бы хотели, чтобы это было внутри оператора if.   -  person Cooper    schedule 18.08.2019


Ответы (1)


Я предполагаю, что это то, что вы хотите:

function onEdit(event) {
  var ss = event.range.getSheet();
  if (ss.getName() !== "Sheet2") return;
  var changedCell = event.source.getActiveRange();
  var c = event.value; 
  var color = 'white'; 
  var data=ss.getRange('G1:H5').getValues();
  for(i=0;i<data.length;i++){
    if (data[i][0]==c){
      switch (data[i][1]) {
        case "Math":
          color = "MediumSeaGreen";
          break;
        case "Science":
          color = "Orange";
          break;
        case "History":
          color = "DarkGray";
          break;
        case "English":
          color = "Gold";
          break;
        case "Spanish":
          color = "LightCoral";
          break;
        default:
          break;
      }
      changedCell.setBackground(color);
    }
  } 
}

Примечание: я не проверял это.

person Cooper    schedule 18.08.2019
comment
Привет @Cooper, СПАСИБО! (и для потомков мне пришлось добавить ss перед getRange) - person Indianagreg; 19.08.2019