Baixar e exportar arquivos

A API Google Drive oferece suporte a vários tipos de ações de download e exportação, conforme listado na tabela a seguir:

Ações de download
Conteúdo de arquivo blob usando o método files.get com o parâmetro alt=media.
Conteúdo de arquivo blob em uma versão anterior usando o método revisions.get com o parâmetro alt=media.
Conteúdo de arquivo blob em um navegador usando o campo webContentLink.
Conteúdo de arquivo blob usando o método files.download com operações de longa duração. Essa é a única maneira de baixar arquivos do Google Vids.
Ações de exportação
Conteúdo de documentos do Google Workspace em um formato que seu app pode processar, usando o método files.export.
Conteúdo de documentos do Google Workspace em um navegador usando o campo exportLinks.
Conteúdo de documentos do Google Workspace em uma versão anterior em um navegador usando o campo exportLinks.
Conteúdo de documentos do Google Workspace usando o método files.download com operações de longa duração.

Na API Drive, um arquivo blob se refere a qualquer arquivo binário bruto armazenado no Google Drive (como imagens, vídeos e PDFs), em vez de um documento do Google Workspace. Ele não se refere ao objeto Blob do JavaScript. Para descrições detalhadas dos tipos de arquivo mencionados aqui, incluindo arquivos blob e do Google Workspace, consulte Tipos de arquivo.

Antes de fazer o download ou exportar o conteúdo do arquivo, verifique se os usuários podem baixar o arquivo usando o capabilities.canDownload campo no recurso files.

O restante deste documento fornece instruções detalhadas para realizar esses tipos de ações de download e exportação.

Fazer o download do conteúdo de arquivos blob

Para baixar um arquivo blob armazenado no Drive, use o files.get método com o ID do arquivo a ser baixado e o alt parâmetro do sistema. O parâmetro alt=media informa ao servidor que um download de conteúdo está sendo solicitado como um formato de resposta alternativo.

O parâmetro do sistema alt está disponível em todas as APIs REST do Google. Se você usar uma biblioteca de cliente da API Drive, não precisará definir esse parâmetro explicitamente, já que o método da biblioteca de cliente adiciona o parâmetro alt=media à solicitação HTTP subjacente.

Os exemplos de código a seguir mostram como usar o método files.get para baixar um arquivo:

Apps Script

/**
 * Downloads a file from Drive.
 * @param {string} fileId The ID of the file to download.
 * @return {Blob} The file content as a Blob.
 */
function downloadFile(fileId) {
  var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
  var response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  });
  return response.getBlob();
}

Java

drive/snippets/drive_v3/src/main/java/DownloadFile.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's download file. */
public class DownloadFile {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream downloadFile(String realFileId) throws IOException {
        /* Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
          guides on implementing OAuth2 for your application.*/
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    try {
      OutputStream outputStream = new ByteArrayOutputStream();

      service.files().get(realFileId)
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to move file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/download_file.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def download_file(real_file_id):
  """Downloads a file
  Args:
      real_file_id: ID of the file to download
  Returns : IO object with location.

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().get_media(fileId=file_id)
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.getvalue()


if __name__ == "__main__":
  download_file(real_file_id="1KuPmvGq8yoYgbfW74OENMCB5H0n_2Jm9")

Node.js

drive/snippets/drive_v3/file_snippets/download_file.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Downloads a file from Google Drive.
 * @param {string} fileId The ID of the file to download.
 * @return {Promise<number>} The status of the download.
 */
async function downloadFile(fileId) {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  // Download the file.
  const file = await service.files.get({
    fileId,
    alt: 'media',
  });

  // Print the status of the download.
  console.log(file.status);
  return file.status;
}

PHP

drive/snippets/drive_v3/src/DriveDownloadFile.php
<?php
use Google\Client;
use Google\Service\Drive;
function downloadFile()
 {
    try {

      $client = new Client();
      $client->useApplicationDefaultCredentials();
      $client->addScope(Drive::DRIVE);
      $driveService = new Drive($client);
      $realFileId = readline("Enter File Id: ");
      $fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
      $fileId = $realFileId;
      $response = $driveService->files->get($fileId, array(
          'alt' => 'media'));
      $content = $response->getBody()->getContents();
      return $content;

    } catch(Exception $e) {
      echo "Error Message: ".$e;
    }

}

.NET

drive/snippets/drive_v3/DriveV3Snippets/DownloadFile.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Download;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of drive's download file.
    public class DownloadFile
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">file ID of any workspace document format file.</param>
        /// <returns>byte array stream if successful, null otherwise.</returns>
        public static MemoryStream DriveDownloadFile(string fileId)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for 
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential
                    .GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var request = service.Files.Get(fileId);
                var stream = new MemoryStream();

                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);

                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

curl

curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --output "FILE_NAME"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.
  • FILE_NAME: o nome do arquivo de saída.

Os downloads de arquivos iniciados no seu app precisam ser autorizados com um escopo que permita acesso de leitura ao conteúdo do arquivo. Por exemplo, um app que usa o escopo drive.readonly.metadata não está autorizado a baixar o conteúdo do arquivo. Os exemplos de código da biblioteca de cliente usam o escopo de arquivo drive restrito que permite aos usuários visualizar e gerenciar todos os arquivos do Drive. Para saber mais sobre os escopos do Drive, consulte Escolher escopos da API Google Drive.

Os usuários com permissões owner (para arquivos do Meu Drive) ou organizer (para arquivos de drives compartilhados) podem restringir o download pelo DownloadRestrictionsMetadata objeto. Para mais informações, consulte Impedir que os usuários façam o download, imprimam ou copiem seu arquivo.

Os arquivos identificados como abusivos (como softwares nocivos) só podem ser baixados pelo proprietário do arquivo. Além disso, o parâmetro de consulta acknowledgeAbuse precisa ser definido como true para indicar que o usuário reconheceu o risco de baixar software indesejado ou outros arquivos abusivos. Seu aplicativo precisa avisar o usuário de forma interativa antes de usar esse parâmetro de consulta.

Acessar dados de arquivos na memória

Se o aplicativo precisar acessar os dados do arquivo diretamente na memória (por exemplo, como um buffer de bytes) em vez de salvá-los em um disco local, ajuste a solicitação da biblioteca de cliente ou processe o stream retornado:

  • Node.js: por padrão, a biblioteca de cliente do Node.js retorna o conteúdo do arquivo como um Readable stream. Para salvar o arquivo no disco local:

    const fs = require('fs');
    
    const dest = fs.createWriteStream('/path/to/dest/file.ext');
    const response = await service.files.get(
      { fileId, alt: 'media' },
      { responseType: 'stream' }
    );
    response.data
      .on('end', () => {
        console.log('Download complete.');
      })
      .on('error', (err) => {
        console.error('Error downloading file.', err);
      })
      .pipe(dest);
    

    Como alternativa, para retornar os dados diretamente na memória como um ArrayBuffer em vez de um stream, defina o parâmetro responseType nas opções de solicitação:

    const file = await service.files.get({
      fileId,
      alt: 'media',
    }, { responseType: 'arraybuffer' });
    
    // Convert the ArrayBuffer to a Node.js Buffer object.
    const buffer = Buffer.from(file.data);
    
  • Python: o exemplo de código Python para baixar um arquivo blob já grava os blocos de download em um objeto na memória io.BytesIO(). Para acessar os bytes brutos, chame file.getvalue().

  • Java: o exemplo de código Java para baixar um arquivo blob usa um java.io.ByteArrayOutputStream para capturar os bytes baixados na memória. Use outputStream.toByteArray() para acessar a matriz de bytes brutos.

  • .NET: o exemplo de código C# para baixar um arquivo blob usa um System.IO.MemoryStream. Use stream.ToArray() para acessar a matriz de bytes subjacente.

  • Apps Script: o exemplo de código do Apps Script para baixar um blob arquivo usa um response.getBlob() método para retornar um Blob objeto. Converta isso em uma matriz de bytes usando o método getBytes().

Download parcial

O download parcial envolve o download apenas de uma parte especificada de um arquivo. É possível especificar a parte do arquivo que você quer baixar usando um intervalo de bytes com o Range cabeçalho. Exemplo:

Range: bytes=500-999

Fazer o download do conteúdo de arquivos blob em uma versão anterior

Para baixar o conteúdo de arquivos blob em uma versão anterior, use o revisions.get método com o ID do arquivo a ser baixado, o ID da revisão e o alt parâmetro do sistema. O parâmetro alt=media informa ao servidor que um download de conteúdo está sendo solicitado como um formato de resposta alternativo. Semelhante a files.get, o método revisions.get também aceita o parâmetro de consulta acknowledgeAbuse e o cabeçalho Range.

Só é possível baixar revisões de conteúdo de arquivos blob marcadas como "Manter indefinidamente". Se você quiser baixar uma revisão, defina-a como "Manter indefinidamente" primeiro. Para mais informações, consulte Especificar revisões para salvar da exclusão automática.

Para mais informações sobre como baixar uma revisão, consulte Gerenciar operações de longa duração.

curl

curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --output "FILE_NAME"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • REVISION_ID: o ID da revisão a ser baixada.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.
  • FILE_NAME: o nome do arquivo de saída.

Fazer o download do conteúdo de arquivos blob em um navegador

Para baixar o conteúdo de arquivos blob armazenados no Drive em um navegador, em vez de usar a API, use o webContentLink campo do recurso files. Se o usuário tiver acesso de download ao arquivo, um link para baixar o arquivo e o conteúdo dele será retornado. É possível redirecionar um usuário para esse URL ou oferecê-lo como um link clicável.

curl

curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --header "Accept: application/json"

Substitua:

  • FILE_ID: o ID do arquivo para receber o link de download para.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.

Fazer o download do conteúdo de arquivos blob usando operações de longa duração

Para baixar o conteúdo de arquivos blob usando operações de longa duração (LROs), use o files.download método com o ID do arquivo a ser baixado. Opcionalmente, defina o ID da revisão.

Essa é a única maneira de baixar arquivos do Google Vids. Se você tentar exportar arquivos do Google Vids, vai receber um fileNotExportable erro. Para mais informações, consulte Gerenciar operações de longa duração.

curl

O comando curl a seguir inicia uma LRO e retorna uma resposta JSON. Para baixar o arquivo ou consultar essa LRO, faça outra solicitação usando o ID retornado para receber o URL do conteúdo. Em seguida, você pode fazer uma solicitação curl final para esse URL para baixar o arquivo. Para mais informações, consulte Gerenciar operações de longa duração.

curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --header "Content-Length: 0" \
  --header "Accept: application/json"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.

Exportar conteúdo de documentos do Google Workspace

Para exportar o conteúdo de bytes de documentos do Google Workspace, use o files.export método com o ID do arquivo a ser exportado e o tipo MIME correto. O conteúdo exportado é limitado a 10 MB.

Os exemplos de código a seguir mostram como usar o método files.export para exportar um documento do Google Workspace no formato PDF:

Apps Script

/**
 * Exports a Google Workspace document.
 * @param {string} fileId The ID of the file to export.
 * @param {string} mimeType The MIME type to export to.
 * @return {Blob} The exported content as a Blob.
 */
function exportPdf(fileId, mimeType) {
  var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
  var response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  });
  return response.getBlob();
}

Java

drive/snippets/drive_v3/src/main/java/ExportPdf.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's export pdf. */
public class ExportPdf {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream exportPdf(String realFileId) throws IOException {
    // Load pre-authorized user credentials from the environment.
    // TODO(developer) - See https://developers.google.com/identity for
    // guides on implementing OAuth2 for your application.
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    OutputStream outputStream = new ByteArrayOutputStream();
    try {
      service.files().export(realFileId, "application/pdf")
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to export file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/export_pdf.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def export_pdf(real_file_id):
  """Download a Document file in PDF format.
  Args:
      real_file_id : file ID of any workspace document format file
  Returns : IO object with location

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().export_media(
        fileId=file_id, mimeType="application/pdf"
    )
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.getvalue()


if __name__ == "__main__":
  export_pdf(real_file_id="1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY")

Node.js

drive/snippets/drive_v3/file_snippets/export_pdf.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Exports a Google Doc as a PDF.
 * @param {string} fileId The ID of the file to export.
 * @return {Promise<number>} The status of the export request.
 */
async function exportPdf(fileId) {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  // Export the file as a PDF.
  const result = await service.files.export({
    fileId,
    mimeType: 'application/pdf',
  });

  // Print the status of the export.
  console.log(result.status);
  return result.status;
}

PHP

drive/snippets/drive_v3/src/DriveExportPdf.php
<?php
use Google\Client;
use Google\Service\Drive;
function exportPdf()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $realFileId = readline("Enter File Id: ");
        $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
        $fileId = $realFileId;
        $response = $driveService->files->export($fileId, 'application/pdf', array(
            'alt' => 'media'));
        $content = $response->getBody()->getContents();
        return $content;

    }  catch(Exception $e) {
         echo "Error Message: ".$e;
    }

}

.NET

drive/snippets/drive_v3/DriveV3Snippets/ExportPdf.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Download;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use of Drive export pdf
    public class ExportPdf
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">Id of the file.</param>
        /// <returns>Byte array stream if successful, null otherwise</returns>
        public static MemoryStream DriveExportPdf(string fileId)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for 
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var request = service.Files.Export(fileId, "application/pdf");
                var stream = new MemoryStream();
                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);
                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

curl

curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --output "FILE_NAME.pdf"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.
  • FILE_NAME: o nome do arquivo de saída.

Os exemplos de código da biblioteca de cliente usam o escopo drive restrito que permite aos usuários visualizar e gerenciar todos os arquivos do Drive. Para saber mais sobre os escopos do Drive, consulte Escolher escopos da API Google Drive.

Os exemplos de código também declaram o tipo MIME de exportação como application/pdf. Para uma lista completa de todos os tipos MIME de exportação aceitos para cada documento do Google Workspace, consulte Tipos MIME de exportação para documentos do Google Workspace.

Exportar conteúdo de documentos do Google Workspace em um navegador

Para exportar o conteúdo de documentos do Google Workspace em um navegador, use o exportLinks campo do files recurso. Dependendo do tipo de documento, um link para baixar o arquivo e o conteúdo dele é retornado para cada tipo MIME disponível. É possível redirecionar um usuário para um URL ou oferecê-lo como um link clicável.

curl

curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --header "Accept: application/json"

Substitua:

  • FILE_ID: o ID do arquivo para receber o link de download para.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.

Exportar conteúdo de documentos do Google Workspace em uma versão anterior em um navegador

Para exportar o conteúdo de documentos do Google Workspace em uma versão anterior em um navegador, use o revisions.get método com o ID do arquivo a ser baixado e o ID da revisão para gerar um link de exportação em que você possa fazer o download. Se o usuário tiver acesso de download ao arquivo, um link para baixar o arquivo e o conteúdo dele será retornado. É possível redirecionar um usuário para esse URL ou oferecê-lo como um link clicável.

curl

curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --header "Accept: application/json"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • REVISION_ID: o ID da revisão a ser baixada.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.

Exportar conteúdo de documentos do Google Workspace usando operações de longa duração

Para exportar o conteúdo de documentos do Google Workspace usando operações de longa duração (LROs), use o files.download método com o ID do arquivo a ser baixado e o ID da revisão. Para mais informações, consulte Gerenciar operações de longa duração.

curl

O comando curl a seguir inicia uma LRO e retorna uma resposta JSON. Para baixar o arquivo ou consultar essa LRO, faça outra solicitação usando o ID retornado para receber o URL do conteúdo. Em seguida, você pode fazer uma solicitação curl final para esse URL para baixar o arquivo. Para mais informações, consulte Gerenciar operações de longa duração.

curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --header "Content-Length: 0" \
  --header "Accept: application/json"

Substitua:

  • FILE_ID: o ID do arquivo a ser baixado.
  • MIME_TYPE: o tipo MIME para exportar.
  • REVISION_ID: o ID da revisão a ser baixada.
  • ACCESS_TOKEN: o token de acesso que concede acesso a API.