Надежный раскрывающийся список и getValues ​​() 2D массив - PullRequest
0 голосов
/ 21 марта 2019

Я создаю надежный (отфильтрованный) раскрывающийся список в листе Google, где значение в одном раскрывающемся списке зависит от выбора другого. Несмотря на довольно простое расположение, я столкнулся с проблемой getValues ​​() который возвращает 2D массив.

Есть следующие настройки:

  1. Два листа, один Задание и другой $ SheetData .
  2. Столбец E Activity содержит раскрывающиеся списки, которые при выборе должны обеспечивать соответствующий выбор в столбце G.
  3. Данные для столбца E получены из листа $ SheetData (E1: K1);
  4. Данные для столбца G получены из листа $ SheetData из каждого из соответствующих столбцов (E1 = SIRE: SIRE1, SIRE2 и т. Д.);
  5. Когда SIRE выбрано в Col E Activity , мне нужно, чтобы данные в столбце G были из E2: E $ SheetData Вот мой код:
function dependableDropdown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activity = ss.getSheetByName("Activity");
  var sheetData = ss.getSheetByName("$SheetData");
  var activeCell = activity.getActiveCell();

  if(activeCell.getColumn() == 5 && activeCell.getRow() > 1){
    activeCell.offset(0, 2).clearContent().clearDataValidations();

    var inspectionTypes = sheetData.getRange(1, 5, 1, 7).getValues();    

    var selectedValue = activeCell.getValue();
    var inspectionTypesIndex = inspectionTypes[0].indexOf(selectedValue) + 1;

    var validationRange = sheetData.getRange(2, inspectionTypesIndex, sheetData.getLastRow());

    var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
    activeCell.offset(0, 2).setDataValidation(validationRule);
  };
};

Значение, возвращаемое inspectionTypesIndex, кажется правильным (SIRE = 1, OVID = 2 и т. Д.), Но когда я выбираю данные в столбце E, я получаю неверные данные, введенные в столбец G.

Оцените вашу помощь.
Спасибо,


Соответствующие экраны:

Таблица активности
Activity sheet

$ SheetData
Data sheet

1 Ответ

1 голос
/ 21 марта 2019

Если вы получите inspectionTypesIndex как написано (SIRE = 1, OVID = 2 и т. Д.), И у вас есть столбцы опций: E, F, G, ..., тогда вы должны ссылаться на validationRange следующим образом:

var validationRange = sheetData.getRange(2, inspectionTypesIndex + 4, sheetData.getLastRow());

потому что столбец E 5-й, но индекс "SIRE" равен 1.

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