Skip to content

messageExtractor_ #11

Open
Open
@oshliaer

Description

@oshliaer
function example(){
  var data = messageExtractor_('from:google.com is:inbox is:unread',
                               function(th, i, data){
                                 data.push(['Тема', th.getFirstMessageSubject(), '', Utilities.formatString('https://mail.google.com/mail/u/0/#/%s', th.getId())]);
                                 if(/ZDM/.test(th.getFirstMessageSubject())) return true;
                               }, function(msg, i, data){
                                 if(msg.isUnread())
                                   data.push(['Сообщение', '', msg.getPlainBody(),  Utilities.formatString('https://mail.google.com/mail/u/0/#/%s', msg.getId())]);
                               }, []);
  
  setValuesToBase_(data);
}

function messageExtractor_(q, threadCallback, messageCallback, data) {
  
  threadCallback = getFn_(threadCallback);
  messageCallback = getFn_(messageCallback);
  
  var threads = GmailApp.search(q);
  for (var i = 0; i < threads.length; i++) {
    var __ = threadCallback(threads[i], i, data);
    if(__ === true) continue;
    var messages = threads[i].getMessages();
    for(var j = 0; j < messages.length; j++){
      messageCallback(messages[j], j, data);
    }
  }
  return data;
}

function setValuesToBase_(values){
  SpreadsheetApp.openById('1p9WFS0LXUX9VMojEjq8LktXzD3mXhEDHqIhPP177Bn0')
  .getSheets()[0]
  .clearContents()
  .getRange(1, 1, values.length, values[0].length)
  .setValues(values);
}

function getFn_(fn){
  return typeof fn === 'function' ? fn: function(){};
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions