2017-08-10 1 views
0

J'ai un e-mail qui m'a été envoyé avec des données. Je veux saisir ces données et les mettre dans une feuille Google. J'ai la plupart du code de travail le seul problème est la zone regex où je ne suis pas très compétent.Analyse de l'adresse e-mail Gmail à l'aide de Google Scripting et transmission de cette information à Google Sheets

Voici le snipet HTML de l'e-mail.

<table class="m_4348561758375603924m_886074067026015045MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="408" style="width:306.0pt;border-collapse:collapse"> 
<tbody> 
    <tr style="height:31.5pt"> 
     <td width="196" nowrap style="width:147.0pt;border:solid windowtext 1.0pt;background:yellow;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><b><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">Date<u></u><u></u></span></b></p> 
     </td> 
     <td width="212" nowrap style="width:159.0pt;border:solid windowtext 1.0pt;border-left:none;background:yellow;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><b><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">Reset Code<u></u><u></u></span></b></p> 
     </td> 
    </tr> 
    <tr style="height:31.5pt"> 
     <td width="196" nowrap style="width:147.0pt;border:solid windowtext 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><strong><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">2017.8.10<u></u><u></u></span></strong></p> 
     </td> 
     <td width="212" nowrap style="width:159.0pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><strong><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">123456<u></u><u></u></span></strong></p> 
     </td> 
    </tr> 
    <tr style="height:31.5pt"> 
     <td width="196" nowrap style="width:147.0pt;border:solid windowtext 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><b><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">2017.8.11<u></u><u></u></span></b></p> 
     </td> 
     <td width="212" nowrap style="width:159.0pt;border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt;height:31.5pt"> 
      <p class="MsoNormal" align="left" style="text-align:left"><strong><span lang="EN-US" style="font-size:24.0pt;font-family:宋体;color:black">123456<u></u><u></u></span></strong></p> 
     </td> 
    </tr> 
</tbody> 
</table> 

Les données que j'ai besoin est la date qui est 10/08/2017 et son code qui est 123456. C'est toujours 6 caractères les dates sont en paires.

Voici mon code pour Google Script.

function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    ui.createMenu('Date Code') 
     .addItem('Get Codes','DateCode') 
     .addToUi(); 
} 

function DateCode() {  
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var label = GmailApp.getUserLabelByName("Inbox RC"); 
    var threads = label.getThreads(); 

    for (var i = 0; i < threads.length; i++) {  
    var tmp, 
     message = threads[i].getMessages()[0], 
     subject = message.getSubject(), 
     content = message.getPlainBody(); 

    if (content) {  
     tmp = content.match(2017); 
     var comment = (tmp && tmp[1]) ? tmp[1] : 'No Code Found!'; 

     sheet.appendRow([comment]);  
    } 
} 

Remarque * Boîte de réception RC est le dossier dans lequel cet e-mail est envoyé par un filtre sur Gmail.

Où j'ai besoin d'aide est dans la ligne tmp = content.match(2017); où 2017 aurait le code dont j'ai besoin pour obtenir le code et la date. Je voudrais extraire deux dates avec leurs codes à deux dif. des champs. Ce que je peux gérer plus tard, j'ai juste besoin d'obtenir les bonnes données après l'exécution de ce script. Son ramasser des mots et des chiffres, mais ce n'est pas ramasser ce que je veux, car il recherche l'ensemble du dossier Ibox RC.

Répondre

0

Vous avez juste besoin d'une regex pour correspondre au format de date que vous connaissez? Que diriez-vous quelque chose comme ceci: http://regexr.com/3ghlh

+0

Qu'en est-il du code? Comment puis-je obtenir le code? –

0
/>(\d{4}\.\d{1,2}\.\d{1,2})<|>(\d+)</g 

https://regex101.com/r/qFHLGK/1

qui est le regex - vous devrez diviser en paires après ... How do you split an array into array pairs in JavaScript?

+0

En passant votre réponse le lien a beaucoup aidé Bookmarked !. Maintenant j'en sais un peu plus sur regex, assez pour me mouiller les pieds. Maintenant, pour nettoyer mon code et m'assurer que je peux capturer la date et le code. Je vous remercie! –

+0

Je devrais dire, Poussez les données dans les colonnes correctes. Google Facilite le codage! –

+0

si cela a fonctionné pour vous j'apprécierais que vous acceptiez la réponse :) – jdubjdub