Reputation: 91
Okay with this I am successfully able to get list of 20 Emails only. What should I change in this code in order to retrieve next page.
And after that I also want to display the attachments of respective emails. but first preference is to get next page, I know I have to use pagetoken but I am not able to implement it.
const getMessages = (labelIds = "INBOX") => {
// Get List of 20 message's Id
const request = window.gapi.client.gmail.users.messages.list({
userId: "me",
labelIds: labelIds,
maxResults: 20,
});
setMessages([]);
// Send Id list to getMessagesData to get Message Data foreach Id
request.execute(getMessagesData);
};
const getMessagesData = (response) => {
const messages = response.result.messages ? response.result.messages : [];
messages.forEach((message) => {
window.gapi.client.gmail.users.messages
.get({
userId: "me",
id: message.id,
})
.then(
(response) => {
setMessages((messages) => [...messages, response.result]);
},
(err) => {
console.error("getMessagesData error", err);
}
);
});
};
const getOneMessage = (messageId) => {
window.gapi.client.gmail.users.messages
.get({
userId: "me",
id: messageId,
})
.then(
(response) => {
setMessage(response.result);
},
(err) => {
console.error("getMessage error", err);
}
);
};
Upvotes: 0
Views: 1466
Reputation: 212
You're almost there :
const request = window.gapi.client.gmail.users.messages.list({
userId: "me",
labelIds: labelIds,
maxResults: 20,
pageToken : pageToken
});
simply add the pageToken to your query.
When you request 20 messages, there will be a pageToken stored somewhere in the answer. Save it and repeat the same request with your new pageToken in the params
https://developers.google.com/gmail/api/v1/reference/users/messages/list#parameters
Upvotes: 2