2012-10-10 6 views
0

Gmail 계정에있는 일부 보고서를 가져 오려고합니다. 정규식을 사용하려고 할 때를 제외하고는 모든 것이 정상적으로 보입니다.GmailApp 메일 가져 오기

목표는 보고서에서 정보를 가져와 스프레드 시트에 붙여 넣는 것입니다.하지만 일부 테스트를 수행 할 때 가끔씩 Gmail에서 아무 것도 검색하지 못합니다 (이메일 본문을 스프레드 시트에 붙여 넣으면 두 개 또는 세 개, 공백, 스무 개 전자 메일, 공백) 다시 정규식의 결과로 NULL을 얻습니다.

누구나 내가 뭘 잘못 설명 할 수 있을까요? Google App 스크립팅 엔진을 사용한 첫 주입니다. 사전에

감사합니다.

다음은 코드입니다. 내가 정확히 Google 앱 스크립트의 Gmail의 객체를 사용하는 방법을 모르는에도 불구하고

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 

    var messages; 
    var ContentEmail; 
    var reportDate,CFree,FFree; 


    for (var i = 0; i < 20 /*threads.length*/; i++) { 
    messages = threads[i].getMessages() 
    reportDate = messages[0].getSubject().replace("Informe ",""); 
    ContentEmail = messages[0].getBody(); 

    CFree = /(\d+.\d+)\s.*GB/g(ContentEmail); 
    FFree = /F<.td><td\s\w+\W+\w+.\w+.>\s(\d+.\d+)/(ContentEmail); 

    Logger.log(reportDate); 
    Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail)); 

    } 

편집이

나는 결론에 도달, 그 정규식 내 목표를 acomplys하는 가장 좋은 방법은 아닙니다.

여기에 루프에 대한 현재 코드

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 
     Logger.log(threads); 
     Logger.log(threads[0].getMessages()); 
     Logger.log(threads[0].getMessages().length); 
     var messages;// = threads[0].getMessages(); 
     var ContentEmail;// = messages[0].getBody(); 
     var reportDate,CFree,FFree; 


     for (var i = 0; i < threads.length; i++) { 
     messages = threads[i].getMessages() 
     reportDate = messages[0].getSubject().replace("Informe ","");//creo si hubiera más mensajes en la conversación (thread) habría más entradas en este array, que ahora mismso solo contiene una cosa 
     ContentEmail = messages[0].getBody(); 

     Logger.log(reportDate); 
     // Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail)); 
     actualData = ContentEmail.split("------------ Espacio en las unidades -----------")[1]; 
     actualData = actualData.replace(/([^ 0-9,])/g,"").trim().replace(/\s+/g," ").split(" "); 
     insertValue([reportDate,actualData[0],actualData[1]]); 
     } 



    } 
+0

apps 스크립트 태그에서 앱 엔진 태그를 변경했습니다. – voscausa

+0

감사합니다. 어느 것이 맞는지 확실하지 않았습니다. – Danielo515

+0

정규식이나 GmailApp에 문제가 있는지 여부는 확실하지 않습니다. 여기에 두 줄을 기록하고 있습니다. 날짜와 내용. 이 두 줄 모두 20 개의 이메일을 건너 뛰는가? 또는 콘텐츠 라인 만 건너 뛸 수 있습니까? –

답변

0

사용을합니다.

function recopilarInformes() { 
    var threads = GmailApp.search('label:informes'); 
    var message, reportDate; 

    for (var i in threads) { 
    message = threads[i].getMessages(); 
    reportDate = message[0].getSubject(); 

    Logger.log(reportDate); 
    } 
} 
+0

코드가 내 것보다 더 깨끗하고 사용 가능해 보입니다. – Danielo515

관련 문제