The Google Script uses regular expressions to create advanced Gmail filters that works just like the native filters of Gmail but are more powerful at parsing email.
/* Perform case-sensitive search for Gmail */ function rule0(thread, rule) { var msg = thread.getMessages()[0]; var body = stripTags([msg.getSubject(), msg.getBody()].join()); var regex = new RegExp(rule[2], "g"); if (body.match(regex)) { thread.addLabel(getGmailLabel(rule[1])); } } /* Is the email sent to several people at once */ function rule1(thread, rule) { var msg = thread.getMessages()[0]; var to = [msg.getTo(), msg.getCc()].join(); if (to.match(/@/g).length >= rule[2]) { thread.addLabel(getGmailLabel(rule[1])); } } /* Is the email extremely long (count words) */ function rule3(thread, rule) { var msg = thread.getMessages()[0]; var body = stripTags(msg.getBody()); if (body.match(/\s+/g).length >= rule[2]) { thread.addLabel(getGmailLabel(rule[1])); } } /* Does the message have too many attachments? */ function rule5(thread, rule) { var msg = thread.getMessages()[0]; var att = msg.getAttachments(); if (att.length > rule[2]) { thread.addLabel(getGmailLabel(rule[1])); } } /* Does a message contain too many links? */ function rule7(thread, rule) { var msg = thread.getMessages()[0]; var body = msg.getBody(); if (body.match(/\https?:\/\//g).length > rule[2]) { thread.addLabel(getGmailLabel(rule[1])); } } /* Does a message contain too many images? */ function rule8(thread, rule) { var msg = thread.getMessages()[0]; var body = msg.getBody(); if ( ( body.match(/]+>/g) || [] ).length > rule[2]) { thread.addLabel(getGmailLabel(rule[1])); } }