Это будет немного более многословно, чем версия Visual Basic:)
function hideColumns() {
// takes active spreadsheet (the one the script is bound to) into work
var ss = SpreadsheetApp.getActiveSpreadsheet();
var settingsSheet = ss.getSheetByName('Settings'); // insert your sheet name here
var dataSheet = ss.getSheetByName('Data');
// gets values from all the cells in the settings sheet into a two-dimensional array, like [[1, 2],[3, 4]]
var values = settingsSheet.getDataRange().getValues();
for (var i in values) {
// checks every row of data if the value in first column is false or not
if (values[i][0] == 'false') {
// my assumption is that each of your checkboxes is on a new line;
// hideColumn will hide those columns that correspond to rows to in the settings sheet
dataSheet.hideColumn(dataSheet.getRange(1, i));
}
}
}
Скрипт Google Apps содержит очень хорошую документацию почти по всем своим сервисам, SpreadsheetApp довольно хорошо освещен, посмотрите эти страницыо функциях, использованных выше:
hideColumn ()
getRange ()
getValues ()
UPD: версия с использованием функции onEdit
- она просматривает отредактированную ячейку и проверяет, находится ли она в первом столбце листа «Настройки» и новое значение - true
.Если все это правда, в «Данные» будет скрыт столбец, который соответствует отредактированной строке.
function onEdit(e) {
var dataSheet = e.source.getSheetByName('Data');
var currentSheet = e.range.getSheet().getName();
var row = e.range.getRow();
var col = e.range.getColumn();
if (currentSheet === 'Settings' && col === 1 && e.value.toLowerCase() == 'false') {
dataSheet.hideColumn(dataSheet.getRange(1, row));
}
}
Подробнее о e
объекте в onEdit
функциях: https://developers.google.com/apps-script/guides/triggers/events