outlook bookmarklet summary
outlook bookmarklet to create a small summary of all mails in inbox (or any other folder you are in).
by Laurens Maneschijn
HTML
outlook bookmarklet to create a small summary of all mails in inbox (or any other folder you are in).
<hr>
drag link to bookmarks:
<a href="javascript: (function($) { function scrape(){ var mails = []; var $mails = $('div[data-convid]:visible'); $mails.each(function(i, element){ var mail = {}; var $mail = $(element); mail.element = element; mail.$mail = $mail; mail.from = $mail.find('[autoid=_lvv_i],[autoid=_lvv_5]').text(); mail.subject = $mail.find('[autoid=_lvv_j],[autoid=_lvv_6]').text(); mail.desc = $mail.find('[autoid=_lvv_k],[autoid=_lvv_7]').text(); mail.unread = $mail.find('[aria-label*="Ongelezen"]').length > 0; mail.selected = $mail.is('[aria-selected="true"]'); mail.checked = $mail.find('[role="checkbox"][aria-checked]').is('[aria-checked="true"]'); mail.checkbutton = $mail.find('[role="checkbox"][aria-checked]')[0]; mail.datetime= $mail.attr('data-time'); mail.time = $mail.find('[autoid=_lvv_j],[autoid=_lvv_6]').parent().parent().next().find('span').text().substr(0, 10); mail.categories = []; $mail.find('img.listViewCategoryIcon:visible').each(function(i,img){ mail.categories.push( $(img).clone() ); }); mail.labeldata = parselabeldata($mail); mails.push(mail); }); window._js_outlook_mails = mails; return mails; } function parselabeldata($mail){ var $mailinner = $mail.find('[aria-label]'); var labelstr = (''+$mailinner.attr('aria-label')); var labels = labelstr.split(', '); var labelkeyvals = {}; $.each(labels, function(i,l){ var split = l.split(' ', 1); var k = split.shift(); var v = split.join(' '); labelkeyvals[k] = v; }); return { labelstr : labelstr, labels : labels, labelkeyvals : labelkeyvals } } function draw(mails){ drawstyle(); var $div_container = createcontainer(); var $table = createtable(mails);...
JavaScript
// outlook inbox list scraper
//javascript:
(function($) {
function scrape(){
var mails = [];
var $mails = $('div[data-convid]:visible');
$mails.each(function(i, element){
var mail = {};
// elements:
var $mail = $(element);
mail.element = element;
mail.$mail = $mail;
// NB: only inbox has: _lvv_i, _lvv_j, _lvv_k
// other folders have: _lvv_5, _lvv_6, _lvv_7
mail.from = $mail.find('[autoid=_lvv_i],[autoid=_lvv_5]').text();
mail.subject = $mail.find('[autoid=_lvv_j],[autoid=_lvv_6]').text();
mail.desc = $mail.find('[autoid=_lvv_k],[autoid=_lvv_7]').text();
mail.unread = $mail.find('[aria-label*="Ongelezen"]').length > 0;
// selected and checked should be the same, but test both just in case?
mail.selected = $mail.is('[aria-selected="true"]');
// <button autoid="_lvv_h" type="button" class="_lvv_w1 noMargin ms-font-m o365button" aria-hidden="true" tabindex="-1" aria-labelledby="_ariaId_29" role="checkbox" aria-checked="false">
mail.checked = $mail.find('[role="checkbox"][aria-checked]').is('[aria-checked="true"]');
mail.checkbutton = $mail.find('[role="checkbox"][aria-checked]')[0];
// NB: only mails in inbox have [data-time]
// substr(0,10) : '09:00' 'vr 1-9' or '31-12-2000'
// mail.datetime= $mail.data('time'); // '2017-09-04T09:40:11+02:00'
mail.datetime= $mail.attr('data-time'); // '2017-09-04T09:40:11+02:00'
mail.time = $mail.find('[autoid=_lvv_j],[autoid=_lvv_6]').parent().parent().next().find('span').text().substr(0, 10);
// <img class="catBBigger listViewCategoryIcon" style="border-color: rgb(28, 99, 103); background-color: rgb(28, 99, 103);">
mail.categories = [];
$mail.find('img.listViewCategoryIcon:visible').each(function(i,img){
mail.categories.push( $(img).clone() );
});
mail.labeldata = parselabeldata($mail);
mails.push(mail);
});
window._js_outlook_mails = mails;
return mails;
}
function parselabeldata($mail){
var $mailinner =...