- Вы хотите отобразить только столбцы со значениями, введенными пользователем. И вы хотите скрыть другие столбцы, кроме них.
- Введенные пользователем значения находятся в строке 8 таблицы «Группа научных лет».
Если я правильно понимаю ваш вопрос, как насчет этой модификации?
Очки модификации:
- Если в текстовое поле помещено несколько строк (
SK, NU
), if(data.getCell(8, i).getValue() != group){}
всегда ложно.
- Дайте имя
name="groupName"
текстовому полю. Используя это, он получает значение, используя group.groupName
на стороне ГАЗА.
- Если имя не указано, вы можете получить значение, используя
group[""]
.
- Я чувствовал, что при использовании
sheet.hideColumns(i)
в цикле for стоимость процесса высока. Поэтому я использовал Sheets API для вашей ситуации.
- Таким образом, скрытие и отображение каждого столбца можно контролировать одним вызовом API.
- Во-первых, чтобы использовать Sheets API, включите Sheets API в Advanced Google Services и консоли API. О том, как включить Sheets API, можно узнать по здесь .
Модифицированные скрипты:
ГАЗ
function showGroup(group) {
var unhide = group.groupName.split(",").map(function(e){return e.trim().toUpperCase()});
var values = sheet.getRange(8, 2, 1, (lastCol - 36) - 2).getValues()[0];
var template = {updateDimensionProperties:{properties:{},range:{sheetId:sheet.getSheetId(),dimension:"COLUMNS"},fields:"hiddenByUser"}};
var r = values.map(function(e, i) {
var t = JSON.parse(JSON.stringify(template));
if (~unhide.indexOf(e)) {
t.updateDimensionProperties.properties.hiddenByUser = false;
} else {
t.updateDimensionProperties.properties.hiddenByUser = true;
}
t.updateDimensionProperties.range.startIndex = i + 1;
t.updateDimensionProperties.range.endIndex = i + 2;
return t;
});
Sheets.Spreadsheets.batchUpdate({"requests": r}, ss.getId());
}
HTML
<form id="filterGroups" >
<input type="text" value="" id="groupName" name="groupName">
<input type="button" value="Filter" onclick="google.script.run.showGroup(filterGroups)">
</form>
Примечание:
- В этом измененном сценарии, когда в текстовое поле помещается
SK, NU
, отображаются только столбцы с SK, NU
. Другие столбцы скрыты.
Ссылка:
Если я неправильно понял ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить его.
Редактировать:
О Can you show me how to pass html form data to GAS functions?
вашего комментария, я покажу вам пример сценария, используя вашу HTML-форму. Форма HTML выглядит следующим образом.
HTML
В этом примере значение отправляется на showGroup(filterGroups)
с использованием google.script.run()
.
<form id="filterGroups" >
<input type="text" value="" id="groupName" name="groupName">
<input type="button" value="Filter" onclick="google.script.run.showGroup(filterGroups)">
</form>
ГАЗ
В этом примере значение из формы HTML извлекается с помощью group.groupName
.
function showGroup(group) {
Logger.log(group.groupName)
}