2017-01-12 4 views
0

問題:毎日12通のメールが届きます。それらをすべて定期的に印刷する必要があります。 Google Apps Scriptで未読メールのみを読み取り、Googleドキュメントに保存することは可能ですか? HTMLはありません。次の形式のプレーンテキストが必要です。未読メールを(テキスト形式で)抽出し、Googleドキュメントに保存します。

​From: S. Banerjee Date: 3 January 2017 at 02:40 Subject: Re: Happy New Year To: "Br. Sayan"

...... ...... Message ..... ......

私は解決策を探して、だけ次hereのようなものを得ることができました。ここで、未読メールのmsgIDを関数に渡す必要があります。書式設定の残りの部分は後で私が思うように断片的に解決することができます。

function saveGmail(msgID) { 

    // Based on Drive Scoop 
    // Available at https://github.com/google/gfw-deployments 

    var message = GmailApp.getMessageById(msgID); 

    // Grab the message's headers. 
    var from = message.getFrom(); 
    var subject = message.getSubject(); 
    var to = message.getTo(); 
    var cc = message.getCc(); 
    var date = message.getDate(); 
    var body = message.getBody(); 

    // Begin creating a doc. 
    var document = DocumentApp.create(subject); 
    var document_title = document.appendParagraph(subject); 
    document_title.setHeading(DocumentApp.ParagraphHeading.HEADING1); 

    var style = {}; 
    style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = (DocumentApp.HorizontalAlignment.CENTER); 
    document_title.setAttributes(style); 

    var headers_heading = (document.appendParagraph("Gmail Message Headers")); 
    headers_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2); 

    AddGmailHeaderToDoc(document, "From", from); 
    AddGmailHeaderToDoc(document, "To", to); 
    AddGmailHeaderToDoc(document, "Cc", cc); 
    AddGmailHeaderToDoc(document, "Date", date); 
    AddGmailHeaderToDoc(document, "Subject", subject); 

    var body_heading = (
    document.appendParagraph("Body (without Markup)")); 
    body_heading.setHeading(DocumentApp.ParagraphHeading.HEADING2); 

    var sanitized_body = body.replace(/<\/div>/, "\r\r"); 
    sanitized_body = sanitized_body.replace(/<br.*?>/g, "\r"); 
    sanitized_body = sanitized_body.replace(/<\/p>/g, "\r\r"); 
    sanitized_body = sanitized_body.replace(/<.*?>/g, ""); 
    sanitized_body = sanitized_body.replace(/'/g, "'"); 
    sanitized_body = sanitized_body.replace(/"/g, '"'); 
    sanitized_body = sanitized_body.replace(/&/g, "&"); 
    sanitized_body = sanitized_body.replace(/\r\r\r/g, "\r\r"); 

    var paragraph = document.appendParagraph(sanitized_body); 

    document.saveAndClose(); 

    return document.getUrl(); 

} 

function AddGmailHeaderToDoc(document, header_name, header_value) { 
    if (header_value === "") return; 
    var paragraph = document.appendParagraph(""); 
    paragraph.setIndentStart(72.0); 
    paragraph.setIndentFirstLine(36.0); 
    paragraph.setSpacingBefore(0.0); 
    paragraph.setSpacingAfter(0.0);  
    var name = paragraph.appendText(header_name + ": "); 
    name.setBold(false); 
    var value = paragraph.appendText(header_value); 
    value.setBold(true); 
} 

ご協力いただきますようお願い申し上げます。

答えて

1

簡単な方法は、使用するかもしれない「です:未読」検索

var threads = GmailApp.search('is:unread'); 
    var messages = threads[0].getMessages(); 
    for (var i = 0; i < messages.length; i++) { 
    Logger.log(messages[i].getId()); 
    } 

これは、IDのがログに記録されますが、あなたは同様にそれらを返すことができます。また、スレッドとメッセージが異なることにも注意してください。上記は、最初の未読スレッドとこのスレッド内のすべてのメッセージを取得します(メッセージが読み込まれた場合でも)。

+0

エラーが発生しました: 'TypeError:オブジェクトにgetMessages関数が見つかりません。 ' 'Logger.log(" found "+ threads.length +" messages。 ")は、' Logger.log'が未読メッセージの数を表示しているため、 'GmailApp.search( 'is:unread'); ; ' –

+0

申し訳ありません[0]が間違った場所にあった、あなたのための更新された答え。 – utphx

関連する問題