Как автоматически установить значение в раскрывающемся списке на основе значения из другого раскрывающегося списка - PullRequest
1 голос
/ 21 марта 2020

У меня есть лист googles с столбцами A - P. Столбец B (GROUP) - это раскрывающийся список, а столбец N (ИСПОЛНИТЕЛЬНОЕ СОСТОЯНИЕ) - это раскрывающийся список. Я пытаюсь автоматически установить конкретное значение в ячейке для GROUP на основе значения, выбранного в раскрывающемся списке СТАТУС ИСПОЛНЕНИЯ.

Например: GROUP содержит следующие значения в раскрывающийся список:

РАЗРАБОТЧИК РАЗВИТИЯ QA УРОВЕНЬ 1 ПОДДЕРЖКА ПОДДЕРЖКИ УРОВНЯ 2

ИСПОЛНЕНИЕ СТАТУС имеет следующие значения в раскрывающемся списке:

PASSED FAILED NOT EXECUTED BLOCKED

Вот что я хочу сделать: если я выберу FAILED в качестве СТАТУСА ИСПОЛНЕНИЯ, я хочу, чтобы ГРУППА автоматически изменилась на DEVELOPER .

Вот моя функция:

function changeGroup(event)
{
  var ColN = 14;  // Column Number of "N"
  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColN) 
  {
    // An edit has occurred in Column N
    var state = changedRange.getValue();
    var Group = event.source.getActiveSheet().getRange(changedRange.getRow(),ColN-12);
    switch (state) 
    {
      case "FAILED":
        // Select DEVELOPER from dropdown list
        Group.setValue("Developer");
        break
      
    }
  }
}

Мне кажется, моя проблема в строке Group.setValue ("Developer") . SetValue устанавливает текстовое значение. Я пытаюсь установить значение из выпадающего списка. Я не уверен. Есть предложения?

1 Ответ

2 голосов
/ 22 марта 2020

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

Group.setValue("DEVELOPER");

Примечание:

  • В вашем сценарии я думаю, что можно использовать триггер события OnEdit простого триггера. Но из вашего сценария кажется, что вы используете устанавливаемый триггер события. Поэтому, пожалуйста, подтвердите, установлена ​​ли функция changeGroup в качестве устанавливаемого триггера события OnEdit, снова.
  • Кстати, если вы хотите запустить скрипт для указанного листа c, пожалуйста, измените if (changedRange.getColumn() == ColN) следующим образом.

    if (changedRange.getColumn() == ColN && changedRange.getSheet().getSheetName() == "Sheet1")
    

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, я приношу свои извинения.

Добавлено:

В вашем случае, простой триггер также может быть использован. Так как насчет тестирования следующего скрипта? Когда вы используете этот скрипт, пожалуйста, скопируйте и вставьте следующий скрипт. Затем измените раскрывающийся список в столбце «N».

function onEdit(event)  // <--- Modified
{
  var ColN = 14;  // Column Number of "N"
  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColN) 
  {
    // An edit has occurred in Column N
    var state = changedRange.getValue();
    var Group = event.source.getActiveSheet().getRange(changedRange.getRow(),ColN-12);
    switch (state) 
    {
      case "FAILED":
        // Select DEVELOPER from dropdown list
        Group.setValue("DEVELOPER");
        break

    }
  }
}

Ссылка:

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