Extraire des information d'un mail depuis Gmail vers Sheets ?
mais cela fonctionne ou pas maintenant ?
oups j'ai édité mon msg en même temps que ta réponse.
non j'ai trouvé une autre alternative
Bonjour,
.replace(/(€|$)/ig,"")
Bonne Soirée
Bonjour,
.replace(/(€|$)/ig,"")
Bonne Soirée
bonjour,
effectivement tes parenthèses m'ont mis sur la voie ( je ne les avais pas mise encore dans mes tests ).
la bonne formule concernant le $ est :
.replace(/(\$)/ig,"")
( il manquait un petit "\" sur ta formule imoka )
merci !
Bonjour !
j'ai un problème
var requete = "is:unread label:realT/Tokens";
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Order/Rent')
function capturerEmails() {
var threads = GmailApp.search(requete);
threads.forEach(thread => {
var msgs = thread.getMessages();
for (var j in msgs) {
var r = getLastDataRow(feuille)+1
//var data = []
//var prov = []
var msg = msgs[j].getBody().replace(/\n|\t/g,'')
//prov.push(msgs[j].getDate())
//data.push(prov)
//feuille.getRange(r,1,1,1).setValues(data);
//feuille.getRange(r,2,1,1).setValue(importOrder(msg));
var order = importOrder(msg)
var date = msgs[j].getDate()
var a = (importTableHTML(msg,date,order))
feuille.getRange(r,1,a.length,a[0].length).setValues(a);
}
// et
var r = feuille.getRange(2, 1, feuille.getLastRow()-1, feuille.getLastColumn());
r.sort([{column: 1, ascending: false}]);
GmailApp.markThreadsRead(threads);
})
}
//importation du titre contenu dans la balise h2
function importOrder(source) {
var data=''
var debut = source.indexOf('<h2')
var fin = source.indexOf('</h2')
var titre = source.substring(debut,fin)
debut = titre.indexOf('>')+2
data = titre.substring(debut)
var regExp = new RegExp("[0-9]+", "g");
var commande = regExp.exec(data)[0];
return(commande);
}
//importation du tableau (contenu de tbody)
function importTableHTML(source,date,order) {
var data = [];
try{
var debut = source.indexOf('<tbody')
var fin = source.indexOf('</tbody')
var html = source.substring(debut,fin)
var trs = html.split('<tr')
for (var i=1;i<trs.length;i++){
var tds = trs[i].split('<td')
var prov=[]
prov.push(date)
prov.push(order)
for (var j=1;j<tds.length;j++){
prov.push(stripTags('<td'+tds[j]).replace('$',''))
}
data.push(prov)
}
}catch(e){
data.push([''])
}
return(data);
}
function stripTags(body) {
var regex = /(<([^>]+)>)/ig;
return body.replace(regex,"").replace(/\r\n|\n|\r|\t/g,'');
}
function getLastDataRow(sheet) {
var lastRow = sheet.getLastRow();
var range = sheet.getRange("C" + lastRow);
if (range.getValue() !== "") {
return lastRow;
} else {
return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
}
}
le problème :
j'importe bien mes mails, bon format etc... en revanche, la 1ere ligne s'écrase lorsque je veux importer un 2ieme mail !
par ex. j'importe 1 mail.
et ensuite un 2ieme
résultat j'ai perdu un mail du 15.10.2021 lorsque j'ai importé celui du 11.10.2021
Si jamais il y a une explication et une solution, moi j'y arrive pas
Bon, j'ai trouvé...
j'ai essayé le script sur un Gsheet vierge, et pas de problème. c'est donc un autre script de mon doc. qui interfère avec celui-ci…
je part en recherche
PS : du coup... Comment bloquer une fonction pour ne pas avoir de problème avec les autres script ? j'ai essayé de l'enfermer dans une fonction "mère" mais elle ne s'exécute plus....
car si chaque mots clés peuvent communiquer et correspondre entre chaque script je m'en sort plus ahah
function emailRealT(){
function capturerEmails(){
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Order')
var cellRent = feuille.getRange('A2:G');
var requete = "is:unread label:realT/Tokens";
var threads = GmailApp.search(requete);
threads.forEach(thread => {
var msgs = thread.getMessages();
for (var j in msgs) {
var n = getLastDataRow(feuille,"A")+1;
//var data = []
//var prov = []
var msg = msgs[j].getBody().replace(/\n|\t/g,'')
//prov.push(msgs[j].getDate())
//data.push(prov)
//feuille.getRange(r,1,1,1).setValues(data);
//feuille.getRange(r,2,1,1).setValue(importOrder(msg));
var order = importOrder(msg)
var date = msgs[j].getDate()
var a = (importTableHTML(msg,date,order));
feuille.getRange(n,1,a.length,a[0].length).setValues(a);
cellRent.sort({column: 1, ascending: false});
}
GmailApp.markThreadsRead(threads);
})
}
//importation du titre contenu dans la balise h2
function importOrder(source) {
var data=''
var debut = source.indexOf('<h2')
var fin = source.indexOf('</h2')
var titre = source.substring(debut,fin)
debut = titre.indexOf('>')+2
data = titre.substring(debut)
var regExp = new RegExp("[0-9]+", "g");
var commande = regExp.exec(data)[0];
return(commande);
}
//importation du tableau (contenu de tbody)
function importTableHTML(source,date,order) {
var data = [];
try{
var debut = source.indexOf('<tbody')
var fin = source.indexOf('</tbody')
var html = source.substring(debut,fin)
var trs = html.split('<tr')
for (var i=1;i<trs.length;i++){
var tds = trs[i].split('<td')
var prov=[]
prov.push(date)
prov.push(order)
for (var j=1;j<tds.length;j++){
prov.push(stripTags('<td'+tds[j]).replace('$',''))
}
data.push(prov)
}
}catch(e){
data.push([''])
}
return(data);
}
function stripTags(body) {
var regex = /(<([^>]+)>)/ig;
return body.replace(regex,"").replace(/\r\n|\n|\r|\t/g,'');
}
function getLastDataRow(sheet,col) {
var lastRow = sheet.getLastRow();
var range = sheet.getRange("A" + lastRow);
if (range.getValue() !== "") {
return lastRow;
} else {
return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
}
}
}