Я хочу сделать макрос в листе Google для следующего случая
В столбце рабочего листа скажем столбец J разрешен ввод текста «A», «B» и «C».
Как только я поставлю A
, B
или C
(в J
-м столбце), цвет фона ячейки должен измениться на «Зеленый», «Желтый» и «Красный» соответственно.
Как я могу это сделать?
Я не очень разбираюсь в макросах, я просто получил задание сделать это. Могу ли я получить некоторую помощь?
Если я правильно понимаю, как насчет этих двух примеров сценариев? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
В этом примере скрипта используется событие OnEdit простых триггеров.
Скопируйте и вставьте следующий скрипт в редактор скриптов и сохраните его. Затем введите значение в столбец «J».
function onEdit(e) {
if (e.range.getColumn() == 10) {
var colors = {A: "green", B: "yellow", C: "red"};
if (Object.keys(colors).indexOf(e.value) > -1) {
e.range.setBackground(colors[e.value]);
} else {
e.range.setValue("");
}
}
}
В этом примере скрипта задайте для столбца «J» как правило проверки данных, так и правило условного формата.
Скопируйте и вставьте следующий скрипт в редактор скриптов и сохраните его. Затем запустите myFunction()
в редакторе скриптов. В этом скрипте условие работает, запуская скрипт только один раз.
function myFunction() {
var rangeA1Notation = "J:J"; // Column "J"
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(rangeA1Notation);
// Set Data Validation
var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST, [["A", "B", "C"], false]).setAllowInvalid(false).build();
range.setDataValidation(rule);
// Set Conditional Format Rule
var rules = sheet.getConditionalFormatRules();
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("A").setBackground("green").setRanges([range]).build());
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("B").setBackground("yellow").setRanges([range]).build());
rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("C").setBackground("red").setRanges([range]).build());
sheet.setConditionalFormatRules(rules);
}
Если эти методы не то, что вы хотите, я извиняюсь.
@ RC0993 Спасибо за ответ. Я прошу прощения за неудобства. Когда вы используете образец сценария 1, после копирования и вставки следующего сценария в редактор сценариев и его сохранения введите значение в столбец «J». При этом скрипт запускается автоматически. Вы можете увидеть официальный документ по адресу здесь. Кстати, используйте контейнерный скрипт Spreadsheet.
@ RC0993 В качестве образца для тестирования, как насчет этого потока? 1. Создайте новую электронную таблицу. 2. Откройте редактор сценариев, скопируйте и вставьте пример сценария 1 и сохраните его. 3. Вернуться к листу и поставить «А» в ячейку «J1». При этом цвет фона ячейки меняется на «зеленый».
Я понял, что пример сценария работает, но не для объединенных строк в этом столбце.
Эй, спасибо, это работает :) Слияние не было проблемой, на самом деле мне пришлось удалить значение «A», которое уже было там, а затем пришлось поставить его снова.
@ RC0993 Я рад, что ваша проблема решена. И тебе спасибо.
Эй, спасибо за ответ. Хотя я, кажется, не заставить его работать. Я поместил функцию
OnEdit
в редактор сценариев и сохранил. Теперь, как мне применить его для столбца J?