Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
Tratando de tener un activador onEdit con GScript que enviaría un mensaje de holgura

He intentado automatizar el envío de mensajes cuando algunos de mis informes se cargan a través de un activador de casilla de verificación en Gscript. (El informe de la idea se actualiza -> El usuario marca la casilla de verificación -> el mensaje se envía a Slack)

Hasta ahora, he podido crear el script para enviar el mensaje a Slack e incluso restablecer mis casillas de verificación por la noche. El único problema que tengo es con el gatillo.

He usado onEdit como disparador, en mis tres casillas de verificación (A1, B1, C1):

 function onEdit(e) { const as = e.source.getActiveSheet(); const cell = e.range.getA1Notation(); if(as.getName() == 'Sheet1' && cell.getRange('A1').ischecked() === true) { SendSlackMessage1(); } else if (as.getName() == 'Sheet1' && cell.getRange('B1').ischecked() === true) { SendSlackMessage2(); } else if (as.getName() == 'Sheet1' && cell.getRange('C1').ischecked() === true) { SendSlackMessage3(); }}

Como referencia, aquí está la función para enviar mensajes:

 function SendSlackMessage1() { const url = "https://hooks.slack.com/services/XXXXXXXXXXXXX"; const params = { method: "post", contentType: "application/json", payload: JSON.stringify({ "text":"Report A has been uploaded" }) } const sendMsg = UrlFetchApp.fetch(url, params) var respCode = sendMsg.getResponseCode() Logger.log(sendMsg) Logger.log(respCode) }

(Todas las funciones de SendSlackmessages son iguales, excepto el texto (Informe A/B/C), y ya he autorizado que las funciones se ejecuten en Google.

Entonces, obviamente, estoy haciendo algo mal, pero ¿qué? mi primera conjetura sería que no estoy definiendo correctamente el rango e, pero no sé qué hacer a continuación.

Estaría agradecido si alguien puede ayudarme o indicarme dónde buscar.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Vuelvo aquí porque he encontrado las respuestas a mis problemas y quiero compartir:

En primer lugar, con onEdit(e), no puede ejecutarlo dentro del editor, de ahí mis problemas para encontrar lo que estaba mal. Entonces, aquí está el código que estoy usando ahora, que funciona:

 function SendSlackMessages(e) { const col = e.range.getColumn(); const row = e.range.getRow(); const checked = e.range.isChecked(); var rtexte = ""; const url = "https://hooks.slack.com/services/XXXX"; if (col == 3 && row == 3){ rtexte = "Short EPGS Horizon"; } else if (col == 4 && row == 3){ rtexte = "Generic Days with EPGS Data"; } else if (col == 5 && row == 3){ rtexte = "TBAs"; } else {return false;} const params = { method: "post", contentType: "application/json", payload: JSON.stringify({ "text":"Report "+ rtexte +" has been uploaded" }) } if(checked === true){ const sendMsg = UrlFetchApp.fetch(url, params); var respCode = sendMsg.getResponseCode(); Logger.log(sendMsg); Logger.log(respCode); } }

En esta función, he agregado un disparador onEdit, y funciona, envía mensajes de holgura solo cuando la edición ocurre en las celdas correctas.

Espero que pueda ayudar a alguien en el futuro.

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. El activador simple onEdit() no se puede usar para realizar una acción que necesita una autorización. Probablemente una variante instalada del disparador pueda funcionar. Puede ser una de las causas del problema.

  2. El código se ve raro. ¿Estás seguro de que funcionará en absoluto?

  • La cell constante es una cadena. Por lo tanto, no puede obtener un rango de esta manera: cell.getRange('A1') . Quizás desee cambiar sus definiciones de esta manera (si necesita la constante):
 const cell = e.range;
  • cell.getRange('A1') probablemente debería ser:
 as.getRange('A1')
  • Y no estoy seguro si ischecked() funcionará. Debería ser isChecked() :

https://developers.google.com/apps-script/reference/spreadsheet/range#ischecked

etc...

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda