Estoy escribiendo código en Google Apps Script para buscar una cadena en los correos electrónicos que aparecen cuando busco un número de ticket específico relacionado con reclamos de seguros. He escrito un código hasta ahora que toma una celda con un número de boleto de una hoja de cálculo de Google, busca ese número en Gmail y devuelve cualquier correo electrónico relacionado a la hoja de cálculo a otra columna, "cantidad total reembolsada" en la fila del número de boleto. Luego, toma la fecha del correo electrónico y la coloca en la columna "fecha de reembolso".
Mi problema es que no puedo averiguar cómo hacer una búsqueda dentro de una búsqueda. En otras palabras, necesito buscar el siguiente texto cuando aparezcan los correos electrónicos relacionados con el número de boleto: "reembolsé su cuenta X por...". Luego, necesito el código para extraer la cantidad de la cadena (X) y colocarla en la columna "cantidad total reembolsada". Cuando ejecuto el código, coloca todo el correo electrónico relacionado con el número de boleto en la columna "cantidad total reembolsada".
Aquí está mi código:
function searchGmail(){ var value = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Tickets/Tolls Reimbursements Master').getRange(8686,12).getValue(); if(value.length > 0) var threads=GmailApp.search(value); var myspreadsheet = SpreadsheetApp.openById("1Jn7r4..."); var mysheet = myspreadsheet.getSheets()[0]; var threads = GmailApp.search(value);; var messages = GmailApp.getMessagesForThreads(threads); var body = []; var date = []; for(var i = 0; i < threads.length; i++) { body.push([messages[i][0].getPlainBody(),i]); } mysheet.getRange(8686,19,threads.length,2).setValues(body); for(var i = 0; i < threads.length; i++) { date.push([messages[i][0].getDate(),i]); } mysheet.getRange(8686,20,threads.length,2).setValues(date); }Agradecería mucho cualquier ayuda aquí. Soy nuevo en la codificación y JavaScript, y estoy realmente atascado.
Podrías intentar algo como el siguiente código. Uso una expresión regular para encontrar la frase que está buscando y luego el número que sigue inmediatamente a la frase de búsqueda. Creo que puede escribir la expresión regular para excluir la cadena de búsqueda de los resultados y simplemente devolver el número, pero nunca he sido muy bueno con RegEx, así que, en cambio, divido la cadena por cada palabra y luego tomo la última palabra , que es el número representado por X en su pregunta. Con suerte, eso debería darle un comienzo para descubrir cómo le gustaría resolverlo.
for (var i = 0; i < threads.length; i++) { // creates a regular expressiom that finds the phrase "reimbursed your account" and number that immedatly follows it let regExp = new RegExp('reimbursed your account [0-9]+'); // assign the message text to a variable let message = messages[i][0].getPlainBody(); // executes the regular expression on the message variable and stores the results in a new array called phrase let phrase = regExp.exec(message); // I assume the search phrase will only apprear once in the email. If appears more than once, you'll need to loop through pharse and deal with each instance appropriately. // split the string into an array at every space in the string, pop off the last value (the number) and store it in num variable let num = phrase[0].split(" ").pop() body.push([num, I]); } mysheet.getRange(8686, 19, threads.length, 2).setValues(body);