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

420
Views
los scripts de Google no arrojan un error de función para getMessages ()

Estoy tratando de crear un script para una función de respuesta automática. Actualmente estoy tratando de tomar cada uno de los correos electrónicos asignados a una etiqueta específica y obtener detalles específicos de cada correo electrónico, sin embargo, recibo un error que indica TypeError: threads.getMessages no es una función, aunque he verificado tres veces que esto es , de hecho, una función de las secuencias de comandos de GMAIL. ¿He hecho algo mal aquí en este código que puede estar causando este error?

 var labelName = "auto-reply-incoming"; var receivedCount = 0; // extract emails from label in Gmail function extractEmails() { // get all email threads that match label var receivedSearchQuery = "label:"+labelName+" -is:sent"; var threads = GmailApp.search(receivedSearchQuery, 0, 500); for (var i=0; i<threads.length; i++) { //count received emails in label receivedCount = receivedCount + threads[i].getMessageCount(); //get body of each email var message = threads.getMessages()[i].getBody(); //get recipient of each email var recipient = threads.getMessages()[i].getTo(); } Logger.log(receivedCount); Logger.log(recipient); }
about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

El problema ocurre porque el código está usando el iterador de subprocesos que podría ser mayor que la cantidad de mensajes en ciertos subprocesos, más específicamente, el problema está en las siguientes líneas:

 //get body of each email var message = threads.getMessages()[i].getBody(); //get recipient of each email var recipient = threads.getMessages()[i].getTo();

Aquí hay una solución rápida (reemplace lo anterior, por lo siguiente)

 var messages = threads[i].getMessages(); for( j = 0; j < messages.length; j++){ //get body of each email var message = messages[j].getBody(); //get recipient of each email var recipient = messages[j].getTo(); }

Nota: Logger.log(recipient) registrará el destinatario del último mensaje del último hilo.

about 4 years ago · Santiago Gelvez Report

0

Prueba esto:

 function extractEmails() { var labelName = "auto-reply-incoming"; var receivedCount = 0; var receivedSearchQuery = "label:" + labelName + " -is:sent"; var ts = GmailApp.search(receivedSearchQuery, 0, 500); var a = []; ts.forEach((t, i) => { let ms = t.getMessages(); ms.forEach((m, j) => { let msg = m.getBody(); let rec = m.getTo(); a.push({ threadindex: j, messageindex: i, message: msg, recipient: rec }) }); }); Logger.log(JSON.stringify(a)); }
about 4 years ago · Santiago Gelvez 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!