O script de aplicativos do Google, onChange, não pode passar um objeto de gatilho para uma variável [duplicado]
Este post foi encerrado, mas não consegui encontrar um problema comparável em outro lugar.
Estou tentando elaborar um script que oculte as linhas de um gatilho onChange (). Quando uma célula se torna "0", quero que a linha dessa célula fique oculta. Comentários da minha primeira postagem me ensinaram que o objeto passado de onChange não contém um intervalo. Existe uma solução alternativa que resolveria esse problema?
Minha planilha tem uma folha de entrada para o back-end e uma folha de saída para o front-end que vai para o cliente. Preciso de um gatilho onChange, para que, conforme os dados vão para o front-end, eles sejam formatados de maneira adequada para serem enviados por e-mail ao cliente. Mais importante ainda, preciso que linhas vazias ('0) sejam ocultadas.
Sou novo e estou aprendendo, então o que escrevi não está funcionando porque os objetos onChange não incluem um intervalo. Obrigada.
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.range;
var VALUE = cell.getValue();
if(VALUE == 0){
sheet.hideRow(cell);
}
}
Eu também tentei:
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
Respostas
Não há valor de intervalo retornado por um gatilho onChange. Aqui está a aparência do objeto de evento.
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
Além disso, lembre-se de que o onChange requer um gatilho instalável.
Objeto de evento onChange
Parece que você confundiu os gatilhos. O gatilho dispara quando ocorre uma mudança "maior" ou estrutural, em vez dos valores alterados. Dos documentos :onChange onEditonChange
Um gatilho de mudança instalável é executado quando um usuário modifica a estrutura de uma planilha - por exemplo, adicionando uma nova planilha ou removendo uma coluna.
Você pode ver nas especificações do objeto de evento que não há valor passado para o programador a partir do onChange
gatilho e, portanto, o tipo de funcionalidade que você está procurando não é facilmente executado.
Você deseja usar o onEdit
gatilho que funcionará mais próximo do que você está procurando. Ele irá disparar sobre qualquer mudança de valor e fornecer os valores novos e antigos. onEdit
também é um " gatilho simples ", portanto, não há necessidade de instalar gatilhos adicionais como você faz para onChange
.
O uso do onEdit
seu código será semelhante a este:
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}