Скрипт для изменения цвета строки с помощью ввода из формы Google - PullRequest
1 голос
/ 28 сентября 2019

Основная проблема форматирования, (или так я думал);наша электронная таблица действует как ежедневный журнал, поэтому, кроме верхней строки (замороженные заголовки), все вручную перемещается в архив ежедневно.Это делает врожденную функцию условного форматирования инертной, так как она больше не работает после перемещения данных.

Так что я нашел измененный скрипт, пока он не будет работать точно так, как нам нужно, с одной незначительной проблемой, весь вводсобранный с помощью формы Google, и хотя скрипт работает, когда соответствующее значение вводится вручную, он не работает при вводе через форму, я попытался использовать триггер, но безрезультатно.

Когдаформа заполнена и отправлена, в кнопку ME входит переключатель (если он выбран)?в столбец E, если это значение введено, то A2: E получает изменение цвета шрифта и цвета фона ячейки, в противном случае все идет как обычно.Этот скрипт в его нынешнем виде:

function OnEdit(e) {
if (e) { 
    var ss = e.source.getActiveSheet();
    var r = e.source.getActiveRange(); 
    if (r.getRow() != 1 && ss.getName() == "Form Responses 0") {

        ME = ss.getRange(r.getRow(), 5).getValue();
        rowRange = ss.getRange(r.getRow(),1,1,5);

        // This changes font and row color
        if (ME == 'ME?') {
            rowRange.setFontColor("#056afa");
            rowRange.setBackground("#fae7bf");

        // DEFAULT
        } else if (ME == ' ') { 
            rowRange.setFontColor("#000000");
            rowRange.setBackground("#ffffff");
        }   
    }
}

Любая помощь будет принята с благодарностью ...

1 Ответ

0 голосов
/ 30 сентября 2019

Поскольку этот триггер должен быть активирован из события, а не из пользовательского действия, вы должны создать устанавливаемый триггер , используя тип On form submit.Во-первых, я настоятельно рекомендую изменить имя вашей функции с OnEdit(e) (которое выглядит очень похоже на зарезервированный триггер onEdit(e)) на некоторое описательное имя (я использовал colorUpdater(e)).Вы можете добавить устанавливаемый триггер из редактора скриптов приложения, используя меню Edit ? Current project's triggers.Там вы должны нажать + Add Trigger и выбрать следующие параметры:

  • Выберите, какую функцию запустить: colorUpdater
  • Выберите, какое развертывание следует запустить: Head
  • Выберите событиеисточник: из электронной таблицы
  • Выберите тип события: при отправке формы
  • Настройки уведомления о сбое: по вашему желанию

Более подробную информацию об этом процессе вы можете найти в управление триггерами вручную документация .Затем вам нужно будет обновить вашу функцию, чтобы она выглядела как следующий код.Это ваша первоначальная функция с некоторыми небольшими изменениями, которые я сделал для реализации нового подхода.

function colourUpdater(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var r = e.range;
  if (r.getRow() != 1 && ss.getName() == "Form Responses 0") {
    var rowRange = ss.getRange(r.getRow(), 5, 1, 1);
    var ME = rowRange.getValue();
    if (ME == 'ME?') {
      // This changes font and row color
      rowRange.setFontColor("#056afa");
      rowRange.setBackground("#fae7bf");
    } else {
      // DEFAULT
      rowRange.setFontColor("#000000");
      rowRange.setBackground("#ffffff");
    }
  }
}

Пожалуйста, попросите у меня разъяснений, если вам нужна дополнительная информация, или этот подход не удовлетворяет вашему первоначальному запросу.

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