#google-apps-script #drop-down-menu #google-sheets
#google-apps-script #выпадающее меню #google-sheets
Вопрос:
Я создаю надежный (отфильтрованный) выпадающий список в Google Sheet, где значение в одном выпадающем списке зависит от выбора другого. Несмотря на относительную простоту устройства, я столкнулся с проблемой с getValues (), которая возвращает 2D-массив.
Существует следующая настройка:
- Два листа, один Activity и другой $ SheetData.
- Столбец E действия содержит выпадающие списки, которые при выборе должны обеспечивать соответствующий выбор в столбце G.
- Данные для столбца E получены из таблицы $SheetData (E1: K1);
- Данные для столбца G получены из таблицы $ SheetData из каждого из соответствующих столбцов (E1 = SIRE: SIRE1, SIRE2 и т.д.);
- Когда в столбце E Activity выбран SIRE, мне нужно, чтобы данные в столбце 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 amp;amp; 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.
Благодарю за помощь.
Спасибо,
Соответствующие экраны:
Комментарии:
1. Как вы запускаете вышеупомянутую функцию
dependableDropdown()
? Или вы запускаете его вручную в качестве предварительного теста?2. @АлександрЕрмолин внизу есть onEdit(), где вызывается dependableDropdown().
Ответ №1:
Если вы получаете, inspectionTypesIndex
как написано (SIRE = 1, OVID = 2 и т.д.), И у вас есть столбцы параметров: E, F, G, … , тогда вы должны ссылаться validationRange
следующим образом:
var validationRange = sheetData.getRange(2, inspectionTypesIndex 4, sheetData.getLastRow());
потому что столбец E является 5-м, но индекс «SIRE» равен 1.
Комментарии:
1. Спасибо! Конечно, как я мог пропустить этот очевидный рост!