Проблема в том, что стандартный флажок возвращает логическое значение.
Это может быть true
или false
, но НЕ TRUE
или FALSE
, которые не определены в Javascript.
Таким образом, они будут правильно проверять значение ячейки:
if (r[0] == true) // test for boolean true
s.hideRows(i + 1);
or
if (r[0])
s.hideRows(i + 1); // test for boolean true
но не
if (r[0] == 'TRUE') // 'TRUE' is a string value
s.hideRows(i + 1);
or
if (r[0] == TRUE) // TRUE is an undefined constant.
s.hideRows(i + 1);
СЕЙЧАС супер запутанная вещь заключается в том, что в формулах true / false регистр не учитывается (TRUE / FALSE и true / false одинаковы). Так что будь осторожен !!
Также обратите внимание, что диапазон s.getRange('B:B')
- это целые 1000 строк, которые могут замедляться. Например, лучше всего ограничить линию диапазона B1:B20
. Не уверен, что это проблема для вас ...
РЕДАКТИРОВАТЬ: Ниже рабочий скрипт:
function hide() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.showRows(1, sheet.getMaxRows());
var values = sheet.getRange('E1:E7').getValues();
values.forEach( function (r, i) {
Logger.log(r);
if (r[0])
sheet.hideRows(i + 1);
});
}
Перед сценарием:
После сценария: