Google apps script Gmail get message without previous conversation

后端 未结 2 1760
夕颜
夕颜 2020-12-20 06:36

I am trying to use a google apps script to dump emails that I have under a specific label to a Google Docs Spreadsheet. I want to list each email message body in a thread a

2条回答
  •  我在风中等你
    2020-12-20 07:10

    I was able to pull out only the body of the emails by identifying where the 'previous conversation' started.

    var sheet = SpreadsheetApp.getActiveSheet();
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var LabelWithEmails = sheet.getRange(3, 2).getValue();
    
    function getEmails() {
        clearCanvas();
        var label = GmailApp.getUserLabelByName(LabelWithEmails);
        var threads = label.getThreads();
    
        var row = getFirstRow() + 1;
        var firstmessageId = getfirstmsgid();
        UserProperties.setProperty("firstmsgid", firstmessageId);
        spreadsheet.toast("Loading emails..Please wait. It could take few seconds", "Status", -1);
    
        var messages = GmailApp.getMessagesForThreads(threads); //gets messages in 2D array
    
        for (var i = 0; i < 2;/*threads.length;*/ i++) {
            try {
                var messages = threads[i].getMessages();
    
                for (var m = 0; m < messages.length; m++) {
                    var msg = messages[m];
                    var isForward = msg.getBody().search(/---------- Forwarded message/i) != -1;
    
                    if(!isValidMessage) continue;
    
                    sheet.getRange(row, 1).setValue(msg.getFrom());
                    sheet.getRange(row, 2).setValue(msg.getTo() + ";" + msg.getCc() + ";" + msg.getBcc());
                    sheet.getRange(row, 3).setValue(msg.getSubject());
                    sheet.getRange(row, 4).setValue(msg.getDate());
    
                    if(!isForward) {
                        // Get only this messages body, ignore the previous chain
                        var body = msg.getBody();
                        var firstIndexOfThread = body.search(/gmail_quote/i); 
                        body = (firstIndexOfThread == -1) ? body : body.substring(0, firstIndexOfThread);
    
                            sheet.getRange(row, 5).setValue(getTextFromHtml(body));
    
                    } else {
                        // Use the whole body if its a forward
                        sheet.getRange(row, 5).setValue(getTextFromHtml(msg.getBody()));
                        sheet.getRange(row, 6).setValue("***");
                    }
    
                row++;
            }
        } catch (error) {
                Logger.log(error);
            spreadsheet.toast("Error Occured - please see the logs.", "Status", -1);
        }
    
        if (i == threads.length - 1) {
            spreadsheet.toast("Successfully loaded emails.", "Status", -1);
        }
      }
    }
    

提交回复
热议问题