I'm looking for a Google Apps script for Gmail that would list the contents of the most recent draft message. So far my code is:
function listDrafts() {
var drafts = Gmail.Users.Drafts.list('me')
if (drafts.drafts.length == 0) {
Logger.log('No draft messages found.');
} else {
Logger.log('Drafts:');
for (var i = 0; i < drafts.drafts.length; i++) {
var draft = drafts.drafts[i].message.payload.headers[i].value;
Logger.log('- %s', draft);
}
}
}
However, I keep getting an error on run. Appreciate any help.
From your script, when Gmail API is enabled at Advanced Google services, I thought that an error might occur at the line of var draft = drafts.drafts[i].message.payload.headers[i].value;
, because drafts.drafts[i].message.payload
returns undefined
. If my understanding is correct, how about the following modification?
When your script is modified, how about the following modification?
From:var draft = drafts.drafts[i].message.payload.headers[i].value;
To:
var draft = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers[i].value;
or
To:var headers = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers;
for (var j = 0; j < headers.length; j++) {
Logger.log(headers[j].value)
}
If I misunderstood your question and this was not the direction you want, I apologize.
Gmail.Users.Drafts
.For this situation, how about the following modification?
var draft = drafts.drafts[i].message.payload.headers[i].value;
To:
var headers = Gmail.Users.Drafts.get("me", drafts.drafts[i].id).message.payload.headers;
for (var j = 0; j < headers.length; j++) {
var search = ["From", "To"];
if (search.indexOf(headers[j].name) != -1) {
Logger.log(headers[j].value)
}
}
var search = ["From", "To"];