At Lokku we use DoneDone a lot. It's a simple and powerful issue tracker. An engineer looks into his or her list of DoneDone tickets, fixes an issue, marks it as fixed and moves forward. All of this is pretty cool as engineers and management both keep a record of all the issues along with their status.
However, especially after working on having more automated procedures, we are starting to get a good amount of automatic emails reporting various errors and problems. Sometimes we engineers fix the issues straight after looking at the email, but often these kind of emails should be really turned into Done Done issues. We will be sure that nobody will forget about them once that is done.
Now, the task of turning an email into a DoneDone issue is itself a simple one. You'd need to click on a plus sign, switch to the GMail view containing all your e-mails, copy the subject, paste it back, then switch again to the email message and copy the body and go back and paste... it's simple, we all agree, but doing this for multiple emails can take that bit of time you would've invested in something less repetitive.
That's where gmailToDoneDone comes into play. I've quickly open sourced it for you to enjoy, should you use the same issue tracker I use. Go and have a look!, and if you have comments let me in the comment section below.
Of course keep reading if you want to know more about the reasons behind this project and other technicalities.
So I've created a bookmarklet to load extra scripts (including gmail.js) and inject markup and css in GMail to have a nicely styled "DoneDone IT!" button that quickly does the job. When the user clicks on the button, gmail.js is used to read the currently opened emails, their subject line and their content.
I had to hit my head against CORS. I couldn't believe it, but yeah... my browser prevented me to perform that cross-domain http request that would have completed the task. And yes I did ask them to support cross-origin resource sharing... but had no prompt answer so far. Plus they will be changing some bits of their API according to the notice shown in the API page.
To fix this I decided to bypass the CORS problem with a small Python server running on my local machine. The requests are then performed against this server, which in turn composes the DoneDone issue and adds it in the desired project through officially-recognized APIs. I like it, but I have my concerns about this solution long term... well, for now we are productive ;-) .