Sample code for 30+ languages & platforms
React Native

Download GMail Message Attachment by ID

See more GMail REST API Examples

Demonstrates how to download a GMail email attachment by the attachment ID.

Chilkat React Native Downloads

React Native
import { BinData, Http, JsonObject, StringBuilder } from '@chilkat/react-native'

async function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  const http = new Http();

  http.authToken = 'ACCESS_TOKEN';
  http.accept = 'application/json';

  // See the following example:  Get GMail Message (format=full)
  // It shows how to download an email by message ID, and it shows how to parse the JSON
  // response which includes attachment names, ids, and other information.

  // This example will assume we already have the attachment id and filename.

  // This is the attachment ID for a file named "helloWorld.pdf".
  const attachmentId = 'ANGjdJ-oy3aCuZISJKLAhUdaEksCEklbAPyMaWzFgqOMGbPCRkgwgeu_Kttd99C17OBTHROkDZGekibTKWXGfscB5ww7fw4E65_V1dQ-jHhb2TD1Cdm58-BbNw2iDxzptco8iILPiSnLLfFn5Ps7nsRcxHaGTt3r0yqFKCuIYNnPK1vM04BXI_cfzo-HnI4I3tD6oHNHOGVQrL01MdShFQjPELPUjXM8z1qs7Kom-QyvV1iOldUN-66UuhynsmDX-CMM5TIdB-8KD_lmdhf-0DqG8JnCA20XpXyfqwS8XFkPA-t-QSjb7SdkHQFtQ4lz2PcBREFzZ2eI5j0l0Y_dQHRPYTeMwkVl1yl4MfFT4C4iso3VSF-eqaIjiFCbXKCFNyeEIW5WFsv189dhlSqU';

  const messageId = '1712bc1dc22da2a2';

  http.setUrlVar('messageId', messageId);
  http.setUrlVar('attachmentId', attachmentId);

  const url = 'https://www.googleapis.com/gmail/v1/users/userId/messages/{$messageId}/attachments/{$attachmentId}';

  // When we download, the response is JSON that contains the attachment data base64url encoded, like this:
  // {
  //  "size": 934,
  //  "data": "JVBERi0xLjM ... CiUlRU9GCg=="
  // }

  const outputFilePath = 'qa_output/helloWorld.pdf';

  // Download into a StringBuilder.
  const sbJson = new StringBuilder();
  try {
    await http.downloadSbAsync(url, 'utf-8', sbJson);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

  if (http.lastStatus !== 200) {
    // Something failed.
    // the JSON contains an error message.
    console.log(sbJson.getAsString());
    return;
  }

  // Load into a Chilkat JSON object.
  const json = new JsonObject();
  json.loadSb(sbJson);

  // Extract the base64url data into a BinData.
  const bd = new BinData();
  json.bytesOf('data', 'base64url', bd);

  // Save the data to a file.
  bd.writeFile('qa_output/helloWorld.pdf');

  console.log('Success.');
}