Sort Gmail Messages by Subject


/ Published in: JavaScript
Save to your folder(s)

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


Copy this code and paste it in your HTML
  1. /****************************************
  2. 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.
  3.  
  4. There are a few caveats when the list is sorted:
  5.  
  6. 1. Shift-clicking to select multiple messages will no longer work.
  7. 2. If you archive or delete messages, they will not disappear.
  8. /****************************************/
  9.  
  10. 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}}})()
  11.  
  12.  
  13. //Expanded:
  14.  
  15. javascript:(function(){
  16.  
  17. function findTitle(r)
  18. {
  19. var td = r.getElementsByTagName("td");
  20. var div, span;
  21. var i, j;
  22. for(i=0; i<td.length; i++)
  23. {
  24. if(td[i].hasAttribute("role") && td[i].getAttribute("role") == "link")
  25. {
  26. div = td[i].getElementsByTagName("div");
  27. for(j=0; j<div.length; j++)
  28. {
  29. if(div[j].className == "y6")
  30. {
  31. span = div[j].getElementsByTagName("span");
  32. if(span.length) return span[0].innerHTML;
  33. }
  34. }
  35. }
  36. }
  37. return "";
  38. }
  39. function doSort(a,b)
  40. {
  41. a = a[0].toLowerCase();
  42. b = b[0].toLowerCase();
  43. if(a<b) return -1;
  44. if(a>b) return 1;
  45. return 0;
  46. }
  47. function sortList(m)
  48. {
  49. var list = Array.prototype.slice.call(m.getElementsByTagName("tr"), 0);
  50. if(!list.length) return;
  51. var tbody = list[0].parentNode;
  52. var sortList = [];
  53. for(var i=0; i<list.length; i++)
  54. {
  55. sortList[i] = [findTitle(list[i]),list[i]];
  56. }
  57. sortList = sortList.sort(doSort);
  58. for(i=0; i<sortList.length; i++)
  59. {
  60. tbody.appendChild(sortList[i][1]);
  61. }
  62. }
  63.  
  64. var doc = document.getElementById('canvas_frame').contentWindow.document;
  65. var tables = doc.getElementsByTagName('table');
  66. for(var i=0; i<tables.length; i++)
  67. {
  68. if(tables[i].className=='F cf zt')
  69. {
  70. sortList(tables[i]);
  71. break;
  72. }
  73. }
  74.  
  75. })()

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.