Insertion de texte avec app script

Bonjour,

Deuxième sujet rapide du jours.

Le script ci-dessous me permet d'importer des mails et les données que je souhaite.. puis l'écriture se fait sur une plage précise.. ( entre A2:F )

Comment avoir la possibilité d'ajouter un texte de manière automatique en "G" à la fin de chaque nouvelles ecritures de données suite à l'importation d'un mail ?

image

Voici le script que j'utilise :

function Commandes(){

  var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi')
  var cellRent = feuille.getRange('A2:F');
  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 = getLastDataRowrealtorder(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 = importrealtOrder(msg)
      var date = msgs[j].getDate()
      var method = importrealtMethod(msg)
      var a = (importTableHTMLrealtorder(msg,date,order,method));
      feuille.getRange(n,1,a.length,a[0].length).setValues(a); 
      cellRent.sort({column: 1, ascending: true});  
    }
    GmailApp.markThreadsRead(threads);
  })
}

//importation de la methode de paiement contenu dans la balise tfoot
function importrealtMethod(source) {
  var data=''
  try{var commande = source.match(/Payment method:[\s\S\w]+?"left">(.*)<\/td>/)[1]}catch(e){var commande = ''}  
Logger.log(commande)  
  return(commande);
}

//importation du titre contenu dans la balise h2
function importrealtOrder(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 importTableHTMLrealtorder(source,date,order,method) {
  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(stripTagsrealtorder('<td'+tds[j]).replace('$',''))
      }
    data.push(prov)
    prov.push(method)
  }
  }catch(e){
    data.push([''])
  }
return(data);
}

function stripTagsrealtorder(body) {
  var regex = /(<([^>]+)>)/ig;
  return body.replace(regex,"").replace(/\r\n|\n|\r|\t/g,'');
}

function getLastDataRowrealtorder(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();
  }
}

Et je sais pas comment avoir la possibilité de rajouter un texte ( qui sera toujours le même ) après chaque enregistrements

Bonne soirée et merci !

Si tu veux ajouter un texte au bout de la ligne ...

prov.push('bla bla bla')
data.push(prov)

au passage, je m'interroge sur ceci

    prov.push(method)

car prov est détruit juste après dans la boucle qui recommence !

Quels changements aurais-tu fait concernant le "method" ?

Si je l'enlève de le la fonction

function importTableHTMLrealtorder(source,date,order,method)

ça ne fonctionne pas..

et merci pour la solution ! qui été simple en faite… j'ai juste eu besoins de mettre

prov.push('bla bla bla')

Comme ceci

function Commandes(){

  var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi')
  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 = getLastDataRowrealtorder(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 = importrealtOrder(msg)
      var date = msgs[j].getDate()
      var method = importrealtMethod(msg)
      var a = (importTableHTMLrealtorder(msg,date,order,method));
      feuille.getRange(n,1,a.length,a[0].length).setValues(a); 
      cellRent.sort({column: 1, ascending: true});  
    }
    GmailApp.markThreadsRead(threads);
  })
}

//importation de la methode de paiement contenu dans la balise tfoot
function importrealtMethod(source) {
  var data=''
  try{var commande = source.match(/Payment method:[\s\S\w]+?"left">(.*)<\/td>/)[1]}catch(e){var commande = ''}  
Logger.log(commande)  
  return(commande);
}

//importation du titre contenu dans la balise h2
function importrealtOrder(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 importTableHTMLrealtorder(source,date,order,method) {
  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(stripTagsrealtorder('<td'+tds[j]).replace('$',''))
      }
    data.push(prov)
    prov.push(method)
    prov.push('xDai')
  }
  }catch(e){
    data.push([''])
  }
return(data);
}

function stripTagsrealtorder(body) {
  var regex = /(<([^>]+)>)/ig;
  return body.replace(regex,"").replace(/\r\n|\n|\r|\t/g,'');
}

function getLastDataRowrealtorder(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();
  }
}

Et tout semble fonctionner correctement !

Si tu vois des éléments qui te choque dans ce script je peux tenter des corrections si nécessaire..

Bonne journée !

Rechercher des sujets similaires à "insertion texte app script"