The only option I see is: - open the message - extract the body / attachments / header / from / to / cc / bcc - send a new message with the above parameters - destroy the previous draft
This is the exact theme of this blog from Amit Agarawal. His script does only what you describe, but does not process inline images. For them, you can adapt the code from this article .
But you're right - what's the point of even having a draft message if you can't just send a stupid thing ?!
We can use the GMail Users.drafts API : send from Google Apps script to send a draft. The following stand-alone script does this and processes the necessary authorization.
Script
A full script is available in this value .
function sendDayOldDrafts() { var threads = GmailApp.search('in:draft label:send-tomorrow'); for (var i=0; i<threads.length; i++) { var msgId = threads[0].getMessages()[0].getId(); sendDraftMsg( msgId ); } } function sendDraftMsg( msgId ) {
Login
To use the Google API, we need the OAuth2 token for the current user - just like for Advanced Services. This is done using ScriptApp.getOAuthToken() .
After copying the code to your own script, go to Resources> Advanced Google Services, open the link for the Google Developer Console, and enable the Gmail API for your project.
As long as the script contains at least one GMailApp method that requires user privileges, the authentication scope will be set correctly for the OAuthToken. In this example, GmailApp.search() sendDayOldDrafts() ; but for insurance, you can include calling an unavailable function directly in the function using the API.
source share