#google-apps-script #google-sheets #setvalue #setbackground
#google-apps-script #google-sheets #setvalue #setbackground
Вопрос:
Я пытаюсь использовать методы setValue и setBackgroundRGB вместе для одной и той же ячейки, но это не работает. На самом деле работает только setValue . Я попробовал 3 разных способа выполнения следующего условия if-else, но всегда вижу только число без каких-либо изменений цвета фона. Если я удалю число, только тогда я увижу цвет. Возможно ли иметь оба для одной и той же ячейки?
(Кроме того, есть ли способ работать в определенных столбцах без использования активной ячейки?)
function onEdit(e) {
var active_cell = e.range;
var active_column = active_cell.getColumn();
if(active_sheet.getName().startsWith("202")){
var in_row= 5;
var exp_row= 6;
var diff_row = 7;
var income = active_sheet.getRange(in_row,active_column).getValue();
var expenses = active_sheet.getRange(exp_row,active_column).getValue();
var diff = income - expenses;
if (active_column >= 2){
if(income > expenses) {
active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0).setValue(diff);
} else if (income == expenses) {
active_sheet.getRange(diff_row,active_column).setValue(diff).setBackgroundRGB(0,255,0);
} else {
active_sheet.getRange(diff_row,active_column).setValue(diff);
active_sheet.getRange(diff_row,active_column).set.setBackgroundRGB(255,0,0);
}
}
}
}
Ответ №1:
active_sheet
не определено в вашем коде, Range.setBackgroundRGB() и Range.setValue() работают должным образом в любой из ваших комбинаций.
Обновленный код:
function onEdit(e) {
var active_sheet = e.source.getActiveSheet();
var active_cell = e.range;
var active_column = active_cell.getColumn();
if(active_sheet.getName().startsWith("202")){
var in_row= 5;
var exp_row= 6;
var diff_row = 7;
var income = active_sheet.getRange(in_row,active_column).getValue();
var expenses = active_sheet.getRange(exp_row,active_column).getValue();
var diff = income - expenses;
if (active_column >= 2){
if(income > expenses) {
active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0).setValue(diff);
} else if (income == expenses) {
active_sheet.getRange(diff_row,active_column).setValue(diff).setBackgroundRGB(0,255,0);
} else {
active_sheet.getRange(diff_row,active_column).setValue(diff);
active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0);
}
}
}
}
Вывод:
Что касается вашего другого вопроса: есть ли способ работать в определенных столбцах без использования активной ячейки?
- Да, вы можете выбрать определенный столбец в качестве своего диапазона, не используя индекс столбца активной ячейки. Вам просто нужно указать жестко заданный индекс столбца при выборе диапазона с помощью Sheet.getRange(строка, столбец).
Пример:
var income = active_sheet.getRange(in_row,4).getValue();
- Здесь я получу доступ к ячейке в столбце D (который находится в индексе 4).
Комментарии:
1. Спасибо! Произошло что-то странное. Мне пришлось «очистить форматирование» в ячейке, с которой я работал, чтобы также увидеть цвет!