Макрос Google Sheets для изменения цвета фона ячейки в зависимости от вводимого текста

Я хочу сделать макрос в листе Google для следующего случая

В столбце рабочего листа скажем столбец J разрешен ввод текста «A», «B» и «C».

Как только я поставлю A, B или CJ-м столбце), цвет фона ячейки должен измениться на «Зеленый», «Желтый» и «Красный» соответственно.

Как я могу это сделать?

Я не очень разбираюсь в макросах, я просто получил задание сделать это. Могу ли я получить некоторую помощь?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
2 200
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Вы хотите изменить цвет фона редактируемой ячейки только тогда, когда «A», «B» и «C» вводятся в столбец «J».
  • «Макрос листа Google» в вашем заголовке и теге — это скрипт Google Apps.

Если я правильно понимаю, как насчет этих двух примеров сценариев? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Пример сценария 1:

В этом примере скрипта используется событие OnEdit простых триггеров.

Поток:

  1. Проверьте диапазон редактируемой ячейки. Если диапазоном является столбец «J», сценарий запускается.
  2. Проверьте введенное значение. Если введенное значение равно «A», «B» и «C», цвет фона изменится.
    • Если введенное значение НЕ "A", "B" и "C", значение удаляется.

Скрипт:

Скопируйте и вставьте следующий скрипт в редактор скриптов и сохраните его. Затем введите значение в столбец «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», сообщите мне об этом.

Пример сценария 2:

В этом примере скрипта задайте для столбца «J» как правило проверки данных, так и правило условного формата.

Поток:

  1. Установить проверку данных
    • При этом в столбец "J" могут быть помещены только значения "A", "B" и "C".
  2. Установить правило условного формата
    • Таким образом, когда значение «A», «B» и «C» помещается в ячейку столбца «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);
}

Использованная литература:

Если эти методы не то, что вы хотите, я извиняюсь.

Эй, спасибо за ответ. Хотя я, кажется, не заставить его работать. Я поместил функцию OnEdit в редактор сценариев и сохранил. Теперь, как мне применить его для столбца J?

RC0993 10.04.2019 11:02

@ RC0993 Спасибо за ответ. Я прошу прощения за неудобства. Когда вы используете образец сценария 1, после копирования и вставки следующего сценария в редактор сценариев и его сохранения введите значение в столбец «J». При этом скрипт запускается автоматически. Вы можете увидеть официальный документ по адресу здесь. Кстати, используйте контейнерный скрипт Spreadsheet.

Tanaike 10.04.2019 11:06

@ RC0993 В качестве образца для тестирования, как насчет этого потока? 1. Создайте новую электронную таблицу. 2. Откройте редактор сценариев, скопируйте и вставьте пример сценария 1 и сохраните его. 3. Вернуться к листу и поставить «А» в ячейку «J1». При этом цвет фона ячейки меняется на «зеленый».

Tanaike 10.04.2019 11:09

Я понял, что пример сценария работает, но не для объединенных строк в этом столбце.

RC0993 10.04.2019 11:22

Эй, спасибо, это работает :) Слияние не было проблемой, на самом деле мне пришлось удалить значение «A», которое уже было там, а затем пришлось поставить его снова.

RC0993 10.04.2019 11:32

@ RC0993 Я рад, что ваша проблема решена. И тебе спасибо.

Tanaike 10.04.2019 14:24

Другие вопросы по теме