С помощью устанавливаемого триггера onEdit, как вызвать функцию, если выбрано значение c в любом из диапазонов ячеек (все с выпадающими списками)? - PullRequest
1 голос
/ 15 апреля 2020

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

Диапазон ячеек: J4: P20 В каждой ячейке есть раскрывающийся список с тремя вариантами A, B и * 1011. * Если я выберу A, я хочу вызвать функцию A, которая загрузит боковую панель A. Если я выберу B, я хочу вызвать функцию B, которая загрузит боковую панель B et c

Создаются боковые панели.

Мне просто нужен полный пример функции onEdit, которая будет вызывать боковую панель A, B или C в зависимости от того, какое значение выбрано в каждом из раскрывающихся списков в каждой ячейке указанного диапазона.

Это моя бедная попытка псевдо.

function onEdit(e) {
  var ss = SpreadsheetApp.getActive()
  var sheet = SpreadsheetApp.getActiveSheet()
  var values = sheet.getRange("J4:P20").getValues();
  Logger.log(values);
  var cellContent = values.getValue()
  if cellcontent = SQL {
   loadsqlSideBar();
  }
  else if cellcontent = ORACLE {
   loadoracleSideBar();
  }
  else if cellcontent = IMANIS {
   loadimanisSideBar();
  }
}



function loadsqlSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('sql');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

function loadoracleSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('oracle');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}


function loadimanisSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('imanis');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Чтобы решить вашу проблему, вам нужно будет использовать объекты событий для мониторинга отредактированной ячейки.

Фрагмент

function onEditTrigger(e) {
  var cellEdited = e.range.getValue();
  if (cellEdited == "SQL") {
   loadsqlSideBar();
  }
  else if (cellEdited == "ORACLE") {
   loadoracleSideBar();
  }
  else if (cellEdited == "IMANIS") {
   loadimanisSideBar();
  }
}


function loadsqlSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('sql');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

function loadoracleSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('oracle');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}


function loadimanisSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('imanis');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

Пояснение

Функция onEditTrigger - это устанавливаемый триггер, который означает, что он будет срабатывать при обнаружении действия edit. Основное различие между устанавливаемым и простым триггером заключается в том, что они могут вызывать службы, требующие авторизации, и обеспечивают большую гибкость. Нет необходимости указывать диапазон J4:P20, так как вы соберете отредактированную ячейку и проверите, является ли ее значение одним из искомых.

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

Установка триггера

Чтобы иметь устанавливаемый триггер, вам потребуется установить его. Для этого вам нужно будет go задействовать триггеры вашего проекта, щелкнув этот значок.

triggers icon

После этого вам нужно будет создать новый триггер со следующими параметрами:

trigger settings

Примечание

Также не забудьте использовать правильный путь для структуры if .

Ссылка

0 голосов
/ 15 апреля 2020
function onEdit(e) {
  if(e.value=='SQL') loadsqlSideBar();
  if(e.value=='ORACLE') loadoracleSideBar();
  if(e.value=='IMANIS') loadimanisSideBar();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...