Vorrei ottenere il messaggio di risposta in una discussione senza il messaggio originale. Tuttavia, quando utilizzo User.messages: GET o Users.threads: GET, ricevo la risposta (come desiderato) anche con il messaggio originale (indesiderato). Vedi screenshot sotto il codice.Come ottenere il messaggio di risposta senza il messaggio originale dall'API di Gmail
(Questa domanda, per quanto posso dire, è stata posta anche here, tuttavia non ho trovato che la soluzione proposta risponda alla domanda e il poster della soluzione proposta mi ha suggerito di iniziare una nuova domanda. .threads come Tholle suggerisce comunque ricevuto lo stesso risultato.)
Sono un noob, quindi qualsiasi aiuto è molto apprezzato e mi scuso se mi manca qualcosa di ovvio.
Codice
var gapiGETRequest = function (gapiRequestURL)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", gapiRequestURL, false);
xmlHttp.send(null);
return xmlHttp.responseText;
}
var gapiRequestInboxMessagesAndToken = "https://www.googleapis.com/gmail/v1/users/me/messages?q=-label%3ASENT+in%3AINBOX&access_token=" + thisToken
var allMessagesReceived = gapiGETRequest(gapiRequestInboxMessagesAndToken)
var allMessagesObject = JSON.parse(allMessagesReceived)
var messageIdsOfReceivedMessages = [];
var getIdsOfReceivedMessages = function(responseObject){
for(var i=0; i < responseObject.messages.length; i ++) {
messageIdsOfReceivedMessages.push(responseObject.messages[i].id);
}
}
var messageContentsArr = [];
var getMessageContents = function(messageIdList)
{
for(var i=0; i < messageIdList.length; i++)
{
var gapiRequestMessageWithId = "https://www.googleapis.com/gmail/v1/users/me/messages/" + messageIdList[i] + "?access_token=" + thisToken
var currentMessage = JSON.parse(gapiGETRequest(gapiRequestMessageWithId))
var encodedMessageContents = currentMessage.payload.parts[0].body.data
var decodedMessageContents = atob(encodedMessageContents.replace(/-/g, '+').replace(/_/g, '/'));
messageContentsArr.push(decodedMessageContents)
}
}
getIdsOfReceivedMessages(allMessagesObject);
getMessageContents(messageIdsOfReceivedMessages);
AFAIK, non è possibile, perché fa parte del contenuto del corpo dell'email di risposta. Gmail ti sta semplicemente inviando qualsiasi testo sia presente nell'e-mail di risposta. Dovresti analizzare personalmente quel testo per rimuovere ciò che non vuoi. –
La riga 'preg_replace' mancava nella sezione PHP qui: https://developers.google.com/gmail/api/v1/reference/users/messages/get#response ' var decodedMessageContents = atob (encodedMessageContents.replace (/ -/g, '+'). replace (/ _/g, '/')); ' Grazie per aver postato il codice! –