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 = $(&apos;div[data-convid]:visible&apos;); $mails.each(function(i, element){ var mail = {}; var $mail = $(element); mail.element = element; mail.$mail = $mail; mail.from = $mail.find(&apos;[autoid=_lvv_i],[autoid=_lvv_5]&apos;).text(); mail.subject = $mail.find(&apos;[autoid=_lvv_j],[autoid=_lvv_6]&apos;).text(); mail.desc = $mail.find(&apos;[autoid=_lvv_k],[autoid=_lvv_7]&apos;).text(); mail.unread = $mail.find(&apos;[aria-label*=&quot;Ongelezen&quot;]&apos;).length &gt; 0; mail.selected = $mail.is(&apos;[aria-selected=&quot;true&quot;]&apos;); mail.checked = $mail.find(&apos;[role=&quot;checkbox&quot;][aria-checked]&apos;).is(&apos;[aria-checked=&quot;true&quot;]&apos;); mail.checkbutton = $mail.find(&apos;[role=&quot;checkbox&quot;][aria-checked]&apos;)[0]; mail.datetime= $mail.attr(&apos;data-time&apos;); mail.time = $mail.find(&apos;[autoid=_lvv_j],[autoid=_lvv_6]&apos;).parent().parent().next().find(&apos;span&apos;).text().substr(0, 10); mail.categories = []; $mail.find(&apos;img.listViewCategoryIcon:visible&apos;).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(&apos;[aria-label]&apos;); var labelstr = (&apos;&apos;+$mailinner.attr(&apos;aria-label&apos;)); var labels = labelstr.split(&apos;, &apos;); var labelkeyvals = {}; $.each(labels, function(i,l){ var split = l.split(&apos; &apos;, 1); var k = split.shift(); var v = split.join(&apos; &apos;); 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 =...