Функция Google Sheets для активной проверки ячейки - PullRequest
0 голосов
/ 19 апреля 2020

Я использую функцию, которая проверяет ячейку цвета и возвращает Да / Нет в другом столбце. Однако после применения функции и последующего изменения цвета ячейки функция больше не применяется.

Например, функция применяется и возвращает «Да», тогда, если я изменю цвет ячейки на белый, она не вернется к «Нет». Возможно ли иметь функцию активной проверки ячейки, или мне просто нужно повторно применять функцию каждый раз, когда изменяется цвет ячейки?

function GetCellColorCode(input) {

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var cell = ss.getRange(input); 
  var result = cell.getBackground(); 

  var green = '#d9ead3';
  var white = '#ffffff';

  if (result == green) {
    return 'Yes';
  } else {    
    return 'No';
  }  

}

1 Ответ

3 голосов
/ 19 апреля 2020
  • Вы хотите обновить sh пользовательских формул =GetCellColorCode(###) в ячейках при изменении цвета фона.

Чтобы достичь вашей цели, я бы хотел предлагаем обновить sh формул, используя TextFinder и триггер события OnChange.

Использование:

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

Скопируйте и вставьте следующий сценарий.

function onChange(e) {
  if (e.changeType === "FORMAT") {
    const formula = "=GetCellColorCode";  // Function name of your custom function.

    const sheet = e.source.getActiveSheet();
    const tempFormula = "=sampleFormula";
    sheet.createTextFinder("^\\" + formula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(tempFormula);
    sheet.createTextFinder("^\\" + tempFormula).matchFormulaText(true).useRegularExpression(true).replaceAllWith(formula);
  }
}
  • В этом примере сценария =GetCellColorCode заменяется другим именем с помощью TextFinder, а затем изменено на =GetCellColorCode. Таким образом, пользовательская формула обновляется.
  • При непосредственном запуске функции onChange в редакторе сценариев возникает ошибка, поскольку эта функция использует объект события триггера события OnChange. Пожалуйста, будьте осторожны.

2. Установите триггер события OnChange.

Пожалуйста, установите триггер события OnChange для функции onChange.

  1. В редакторе сценариев выберите Редактировать > Триггеры текущего проекта .
  2. Нажмите Добавить триггер .
  3. Под Выберите, какую функцию запустить , выберите название функции, которую вы хотите для запуска.
    • В этом случае выберите onChange.
  4. Под Выберите источник события , выберите Из электронной таблицы .
  5. Под Выберите тип события , выберите При изменении .
  6. Нажмите Сохранить .

3. Тестовый прогон.

После завершения вышеуказанного потока измените цвет фона ячейки. При этом срабатывает триггер события OnChange и запускается функция onChange. Затем обновляется пользовательская формула GetCellColorCode.

В этом сценарии, даже когда ячейка копируется и вставляется, триггер вентиляции OnChange не запускается. Пожалуйста, будьте осторожны с этим. В этом случае измените цвет фона.

Примечание:

  • В этом ответе предполагается, что имя вашей пользовательской формулы - GetCellColorCode. Поэтому, когда вы изменили имя функции, также измените приведенный выше скрипт. Пожалуйста, будьте осторожны.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...