Компания, в которой я работаю, имеет большой объем данных, хранящихся в Google Sheets, и многие разные люди имеют доступ к ним и имеют доступ к редактированию.Чтобы все было согласованно, я настраиваю некоторые формулы / сценарии по всему листу.
В настоящий момент я застреваю на скрипте, который будет запускать формулу IF и отображать заданное значение, если ячейка перед ним равна определенному значению.Таким образом, в столбце K есть раскрывающийся список «Проверка данных», сделанный вне диапазона в A1: I1, если я выберу значение, оно должно просто отображать все данные в ячейке непосредственно под этим диапазоном.Я знаю, что это можно сделать с помощью простого VLOOKUP, но я бы не стал этого делать, если бы мне это не нужно.Текущий скрипт, который у меня есть, выглядит так:
function onEdit(){
var tabPhase = "Authenticated";
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dataYear = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabPhase);
var activeCell = spreadSheet.getActiveCell();
if(activeCell.getColumn() == 11 && activeCell.getRow() > 1 && spreadSheet.getSheetName() == tabPhase){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = dataYear.getRange(1, 1, 1, dataYear.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = dataYear.getRange(3, makeIndex, dataYear.getLastRow());
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}
}
Он работает почти идеально, единственная проблема, с которой я сталкиваюсь, заключается в том, что ячейка в столбце L затем выводит подтверждение данных.
Я также смог как-то заставить это работать, используя вложенный оператор if, однако я не уверен, как вытащить его из ячейки, а просто отобразить предварительно установленные данные.Вот этот код:
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var aSheet = ss.getActiveSheet();
var aCell = aSheet.getActiveCell();
var aColumn = aCell.getColumn();
var aRow = aCell.getRow();
var licenseTypeCell = aSheet.getRange(aRow, aColumn+1);
var aValue = aCell.getValue()
if (aColumn == 1 && aSheet.getName() == 'Authenticated Ranges') {
var matchCell = aSheet.getRange(aRow, aColumn).getValue()
if(matchCell == "A1")
licenseTypeCell.setValue("A2");
if(matchCell == "B1")
licenseTypeCell.setValue("B2");
if(matchCell == "C1")
licenseTypeCell.setValue("C2");
if(matchCell == "D1")
licenseTypeCell.setValue("D2");
}
}
Что я могу изменить, чтобы он показывал только значение во второй строке, а не диапазон проверки данных, который он показывает в данный момент?