La secuencia de comandos de las aplicaciones de Google, onChange, no puede pasar un objeto activador a una variable [duplicado]
Esta publicación se cerró, pero no he podido encontrar un problema comparable en otro lugar.
Estoy tratando de elaborar un script que oculte filas de un disparador onChange (). Cuando una celda se convierte en "0", quiero que la fila en la que se encuentra la celda se oculte. Los comentarios de mi primera publicación me han enseñado que el objeto pasado de onChange no contiene un rango. ¿Existe alguna solución que solucione este problema?
Mi hoja de cálculo tiene una hoja de entrada para el backend y una hoja de salida para el frontend que va al cliente. Necesito un activador onChange, de modo que a medida que los datos vayan a la interfaz, tengan un buen formato para enviarlos por correo electrónico al cliente. Lo más importante es que necesito que las filas vacías ('0) estén ocultas.
Soy nuevo y estoy aprendiendo, así que lo que he escrito no funciona porque los objetos onChange no incluyen un rango. Gracias.
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);
}
}
También probé:
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
Respuestas
No hay ningún valor de rango devuelto por un desencadenador onChange. Así es como se ve el objeto de evento.
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
Además, tenga en cuenta que onChange requiere un disparador instalable.
onChange Event Object
Parece que tienes los desencadenantes confundidos. El disparador se activa cuando se produce un cambio "mayor" o estructural, en lugar de cuando se modifican los valores. De los documentos :onChange onEditonChange
Un activador de cambio instalable se ejecuta cuando un usuario modifica la estructura de una hoja de cálculo, por ejemplo, agregando una nueva hoja o eliminando una columna.
Puede ver en las especificaciones del objeto de evento que no se pasa ningún valor al programador desde el onChange
disparador y, por lo tanto, el tipo de funcionalidad que está buscando no se realiza fácilmente.
Desea utilizar el onEdit
disparador que funcionará más cerca de lo que está buscando. Se activará ante cualquier cambio de valor y le dará los valores nuevos y antiguos. onEdit
también es un " activador simple ", por lo que no es necesario instalar activadores adicionales como lo hace para onChange
.
El uso de onEdit
su código se verá así:
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}