2016-12-18 5 views
1

Я очень новичок в сценариях Google и просмотрел похожие вопросы по тому, что я задаю сейчас, но пушка, похоже, ретро подходит к предыдущему совету в то, что я ищу. У меня есть простой «Да/Нет» в ячейке A2 моего листа. Если «Да» выбран, я хотел бы, чтобы скрыть строки 5 и 7. Я работаю на ниже:Google Таблицы: скрытие строк на основе значений сотовой связи

Prior Year my onEdit(e) { 
    Logger.log('e.value: ' + e.value); 

var cellEdited = e.range.getA1Notation(); 
Logger.log('cellEdited: ' + cellEdited); 

if (cellEdited === "A2" && e.value === "yes") { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("TX MD 2017"); 
var maxRows = sheet.getMaxRows(); 

theSheet.hideRows(5,7); 
}; 
} 

Любая помощь или подталкивания было бы очень полезно.

ответ

0

Код требователен случае

В описании проекта вы говорите о варианты быть «Да»/«Нет», с «Y» капитализируются. Если это действительно так, то e.value === 'yes' не будет работать должным образом. Не забудьте сделать строки и тот же случай, когда сравнивая их:

`e.value.toLowercase() === 'yes'` 

Wrong функция: Sheet.hideRows

API-интерфейс для hideRows утверждает, что первый параметр является строка, чтобы начать с, а второй параметр сколько строк спрятаться после стартовой строки. Это заставляет ваш код скрывать 7 строк ниже и в том числе пятый. Если вы хотите, чтобы скрыть строку 5 и 7, вы должны сделать:

theSheet.hideRow(5); 
theSheet.hideRow(7); 

Избегайте добавления ненужных разрешений

При использовании SpreadsheetApp.getActiveSpreadsheet вы делаете это так, вам нужно, чтобы скрипт для доступа и измените ваши электронные таблицы. Это нарушает принцип безопасности/защиты наименьших привилегий; обычно вы хотите предоставить пользователю наименьший доступ, чтобы выполнить свою задачу. Так как вы можете получить доступ к электронной таблицы в объекте события с помощью e.source, было бы хорошей идеей, чтобы просто использовать, что вместо того, чтобы:

var ss = e.source; 
var sheet = ss.getSheetByName("TX MD 2017"); 

// You don't use maxRows, so get rid of it 
sheet.hideRow(5); // theSheet is not defined 
sheet.hideRow7); 

предыдущий год мой?

Недействительный JavaScript. Это должно быть:

function onEdit(e) { 
    // code 
} 
Смежные вопросы