Dhruv patel
Dhruv patel

Reputation: 91

How to get next page gmails in gmail API?

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

Answers (1)

Pursuable
Pursuable

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

Related Questions