Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!