This is a very simple bookmarklet that will temporarily sort the visible messages in Gmail by subject. You'll have to run it again each time Gmail refreshes the list.
[Sort Gmail Messages](javascript:(function(){function%20f(r){var%20t=r.getElementsByTagName("td");var%20d,s;var%20i,j;for(i=0;i<t.length;i++){if(t[i].hasAttribute("role")&&t[i].getAttribute("role")=="link"){d=t[i].getElementsByTagName("div");for(j=0;j<d.length;j++){if(d[j].className=="y6"){s=d[j].getElementsByTagName("span");if(s.length)return%20s[0].innerHTML}}}}return%20""}function%20ds(a,b){a=a[0].toLowerCase();b=b[0].toLowerCase();if(a<b)return%20-1;if(a>b)return%201;return%200}function%20sl(m){var%20l=Array.prototype.slice.call(m.getElementsByTagName("tr"),0);if(!l.length)return;var%20b=l[0].parentNode;var%20s=[];for(var%20i=0;i<l.length;i++){s[i]=[f(l[i]),l[i]]}s=s.sort(ds);for(i=0;i<s.length;i++){b.appendChild(s[i][1])}}var%20d=document.getElementById('canvas_frame').contentWindow.document;var%20t=d.getElementsByTagName('table');for(var%20i=0;i<t.length;i++){if(t[i].className=='F%20cf%20zt'){sl(t[i]);break}}})() "Drag this into your bookmarks!")
roryok found a few caveats when the list is sorted:
- Shift-clicking to select multiple messages will no longer work.
- If you archive or delete messages, they will not disappear.
/**************************************** A very simple bookmarklet that will temporarily sort the *visible* messages in Gmail by subject. You'll have to run it again each time Gmail refreshes the list. There are a few caveats when the list is sorted: 1. Shift-clicking to select multiple messages will no longer work. 2. If you archive or delete messages, they will not disappear. /****************************************/ javascript:(function(){function%20f(r){var%20t=r.getElementsByTagName("td");var%20d,s;var%20i,j;for(i=0;i<t.length;i++){if(t[i].hasAttribute("role")&&t[i].getAttribute("role")=="link"){d=t[i].getElementsByTagName("div");for(j=0;j<d.length;j++){if(d[j].className=="y6"){s=d[j].getElementsByTagName("span");if(s.length)return%20s[0].innerHTML}}}}return%20""}function%20ds(a,b){a=a[0].toLowerCase();b=b[0].toLowerCase();if(a<b)return%20-1;if(a>b)return%201;return%200}function%20sl(m){var%20l=Array.prototype.slice.call(m.getElementsByTagName("tr"),0);if(!l.length)return;var%20b=l[0].parentNode;var%20s=[];for(var%20i=0;i<l.length;i++){s[i]=[f(l[i]),l[i]]}s=s.sort(ds);for(i=0;i<s.length;i++){b.appendChild(s[i][1])}}var%20d=document.getElementById('canvas_frame').contentWindow.document;var%20t=d.getElementsByTagName('table');for(var%20i=0;i<t.length;i++){if(t[i].className=='F%20cf%20zt'){sl(t[i]);break}}})() //Expanded: javascript:(function(){ function findTitle(r) { var td = r.getElementsByTagName("td"); var div, span; var i, j; for(i=0; i<td.length; i++) { if(td[i].hasAttribute("role") && td[i].getAttribute("role") == "link") { div = td[i].getElementsByTagName("div"); for(j=0; j<div.length; j++) { if(div[j].className == "y6") { span = div[j].getElementsByTagName("span"); if(span.length) return span[0].innerHTML; } } } } return ""; } function doSort(a,b) { a = a[0].toLowerCase(); b = b[0].toLowerCase(); if(a<b) return -1; if(a>b) return 1; return 0; } function sortList(m) { var list = Array.prototype.slice.call(m.getElementsByTagName("tr"), 0); if(!list.length) return; var tbody = list[0].parentNode; var sortList = []; for(var i=0; i<list.length; i++) { sortList[i] = [findTitle(list[i]),list[i]]; } sortList = sortList.sort(doSort); for(i=0; i<sortList.length; i++) { tbody.appendChild(sortList[i][1]); } } var doc = document.getElementById('canvas_frame').contentWindow.document; var tables = doc.getElementsByTagName('table'); for(var i=0; i<tables.length; i++) { if(tables[i].className=='F cf zt') { sortList(tables[i]); break; } } })()
Comments
Subscribe to comments
You need to login to post a comment.

Updated
I like the idea behind this and I'd like to get it to work. I assumed that I could drag the link at the top of the page to my bookmark bar and click it when I'm on my gmail page, although that didn't work. What do I need to do to get this working on my gmail account?
I like the idea behind this and I'd like to get it to work. I assumed that I could drag the link at the top of the page to my bookmark bar and click it when I'm on my gmail page, although that didn't work. What do I need to do to get this working on my gmail account?
I like the idea behind this and I'd like to get it to work. I assumed that I could drag the link at the top of the page to my bookmark bar and click it when I'm on my gmail page, although that didn't work. What do I need to do to get this working on my gmail account?
Well, Google changes the Gmail page every now and then. I'll try to update it when I get a chance.
Okay, the code was correct; I just forgot to change the link. It works now.
I had to change one line of code in this to get it working...
changed
document.getElementById('canvas_frame').contentWindow.document.getElementById(":op");
to
document.getElementById(":on");
sorry, thats wrong it should just change ":op" to ":on"
UPDATE:
change document.getElementById('canvasframe').contentWindow.document.getElementById(":op"); to document.getElementById('canvasframe').contentWindow.document.getElementById(":on");
Thanks, roryok. It's still working for me, but I've had that problem before - sometimes an element gets renamed just for the hell of it and I haven't figured out why. I'll take a look at it when I get a chance.
I've also just modified this to sort by sender, http://snipplr.com/view/21960/sort-gmail-messages-by-sender/
(my first snipplr post! yay!)
Huh. For me,
:opis still correct;:onis the cell containing the first checkbox. Out of curiosity, which theme are you using?i'm using the 'classic' theme... I wonder if it has something to do with labs features?
It is the labs! I'll figure out which one it is...
Out of the labs that I have enabled, the Quick Links one is causing the problem.
Okay, now it finds the table by its class. See if it works for you.
I have highlighted the contents of line 10 and pasted it my Safari browser but I can't get my Gmail to sort by subject. Is there something I missed?
It still works in Safari 3.2 Win on my computer. You could try logging in with labs turned off; sometimes those change IDs and stuff so scripts don't work. https://mail.google.com/mail/?labs=0