Télécharger et exporter des fichiers

L'API Google Drive est compatible avec plusieurs types d'actions de téléchargement et d'exportation, comme indiqué dans le tableau suivant :

Actions de téléchargement
Contenu de fichier blob à l'aide de la méthode files.get avec le paramètre alt=media.
Contenu de fichier blob dans une version antérieure à l'aide de la méthode revisions.get avec le paramètre alt=media.
Contenu de fichier blob dans un navigateur à l'aide du champ webContentLink.
Contenu de fichier blob à l'aide de la méthode files.download avec des opérations de longue durée. Il s'agit du seul moyen de télécharger des fichiers Google Vids.
Actions d'exportation
Contenu de document Google Workspace dans un format que votre application peut gérer, à l'aide de la méthode files.export.
Contenu de document Google Workspace dans un navigateur à l'aide du champ exportLinks.
Contenu de document Google Workspace dans une version antérieure dans un navigateur à l'aide du champ exportLinks.
Contenu de document Google Workspace à l'aide de la méthode files.download avec des opérations de longue durée.

Avant de télécharger ou d'exporter le contenu d'un fichier, vérifiez que les utilisateurs peuvent télécharger le fichier à l'aide du capabilities.canDownload champ de la ressource files.

Pour obtenir des descriptions des types de fichiers mentionnés ici, y compris les fichiers blob et Google Workspace, consultez Types de fichiers.

Le reste de ce document fournit des instructions détaillées pour effectuer ces types d'actions de téléchargement et d'exportation.

Télécharger le contenu d'un fichier blob

Pour télécharger un fichier blob stocké sur Drive, utilisez la files.get méthode avec l'ID du fichier à télécharger et le alt paramètre système. Le paramètre alt=media indique au serveur qu'un téléchargement de contenu est demandé en tant que format de réponse alternatif.

Le paramètre système alt est disponible dans toutes les API Google REST. Si vous utilisez une bibliothèque cliente de l'API Drive, vous n'avez pas besoin de définir explicitement ce paramètre, car la méthode de la bibliothèque cliente ajoute le paramètre alt=media à la requête HTTP sous-jacente.

Les exemples de code suivants montrent comment utiliser la méthode files.get pour télécharger un fichier :

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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.
  • FILE_NAME : nom du fichier de sortie.

Les téléchargements de fichiers lancés depuis votre application doivent être autorisés avec une autorisation qui permet un accès en lecture au contenu du fichier. Par exemple, une application utilisant l'autorisation drive.readonly.metadata n'est pas autorisée à télécharger le contenu du fichier. Les exemples de code de la bibliothèque cliente utilisent l'autorisation de fichier drive limitée qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus sur les autorisations Drive, consultez Choisir les autorisations de l'API Google Drive.

Les utilisateurs disposant des autorisations owner (pour les fichiers Mon Drive) ou organizer (pour les fichiers de Drive partagé) peuvent limiter le téléchargement via l' DownloadRestrictionsMetadata objet. Pour en savoir plus, consultez Empêcher les utilisateurs de télécharger, d'imprimer ou de copier votre fichier.

Les fichiers identifiés comme abusifs (tels que les logiciels malveillants) ne peuvent être téléchargés que par leur propriétaire. De plus, le paramètre de requête acknowledgeAbuse doit être défini sur true pour indiquer que l'utilisateur a reconnu le risque de télécharger des logiciels potentiellement indésirables ou d'autres fichiers abusifs. Votre application doit avertir l'utilisateur de manière interactive avant d'utiliser ce paramètre de requête.

Téléchargement partiel

Le téléchargement partiel consiste à ne télécharger qu'une partie spécifiée d'un fichier. Vous pouvez spécifier la partie du fichier que vous souhaitez télécharger à l'aide d'une plage d'octets avec l' Range en-tête. Exemple :

Range: bytes=500-999

Télécharger le contenu d'un fichier blob dans une version antérieure

Pour télécharger le contenu de fichiers blob dans une version antérieure, utilisez la revisions.get méthode avec l'ID du fichier à télécharger, l'ID de la révision et le alt paramètre système. Le paramètre alt=media indique au serveur qu'un téléchargement de contenu est demandé en tant que format de réponse alternatif. Comme files.get, la méthode revisions.get accepte également le paramètre de requête acknowledgeAbuse et l'en-tête Range.

Vous ne pouvez télécharger que les révisions de contenu de fichier blob marquées comme "Conserver indéfiniment". Si vous souhaitez télécharger une révision, définissez-la d'abord sur "Conserver indéfiniment". Pour en savoir plus, consultez Spécifier les révisions à enregistrer pour éviter la suppression automatique.

Pour en savoir plus sur le téléchargement d'une révision, consultez Gérer les opérations de longue durée.

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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • REVISION_ID : ID de la révision à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.
  • FILE_NAME : nom du fichier de sortie.

Télécharger le contenu d'un fichier blob dans un navigateur

Pour télécharger le contenu de fichiers blob stockés sur Drive dans un navigateur, au lieu de passer par l'API, utilisez le webContentLink champ de la files ressource. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.

curl

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

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.

Télécharger le contenu d'un fichier blob à l'aide d'opérations de longue durée

Pour télécharger le contenu de fichiers blob à l'aide d'opérations de longue durée (OLD), utilisez la files.download méthode avec l'ID du fichier à télécharger. Vous pouvez éventuellement définir l'ID de la révision.

Il s'agit du seul moyen de télécharger des fichiers Google Vids. Si vous tentez d'exporter des fichiers Google Vids, vous recevez une fileNotExportable erreur. Pour en savoir plus, consultez Gérer les opérations de longue durée.

curl

La commande curl suivante lance une OLD et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette OLD, vous devez effectuer une autre requête à l'aide de l'ID renvoyé afin d'obtenir l'URL du contenu. Vous pouvez ensuite effectuer une dernière requête curl à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.

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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.

Exporter le contenu d'un document Google Workspace

Pour exporter le contenu d'un document Google Workspace en octets, utilisez la files.export méthode avec l'ID du fichier à exporter et le type MIME approprié. Le contenu exporté est limité à 10 Mo.

Les exemples de code suivants montrent comment utiliser la méthode files.export pour exporter un document Google Workspace au format 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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.
  • FILE_NAME : nom du fichier de sortie.

Les exemples de code de la bibliothèque cliente utilisent l'autorisation drive limitée qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus sur les autorisations Drive, consultez Choisir les autorisations de l'API Google Drive.

Les exemples de code déclarent également le type MIME d'exportation comme application/pdf. Pour obtenir la liste complète de tous les types MIME d'exportation compatibles pour chaque document Google Workspace, consultez Types MIME d'exportation pour les documents Google Workspace.

Exporter le contenu d'un document Google Workspace dans un navigateur

Pour exporter le contenu d'un document Google Workspace dans un navigateur, utilisez le exportLinks champ de la files ressource. Selon le type de document, un lien permettant de télécharger le fichier et son contenu est renvoyé pour chaque type MIME disponible. Vous pouvez rediriger un utilisateur vers une URL ou la proposer sous forme de lien cliquable.

curl

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

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.

Exporter le contenu d'un document Google Workspace dans une version antérieure dans un navigateur

Pour exporter le contenu d'un document Google Workspace dans une version antérieure dans un navigateur, utilisez la méthode revisions.get avec l'ID du fichier à télécharger et l'ID de la révision pour générer un lien d'exportation à partir duquel vous pouvez effectuer le téléchargement. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.

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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • REVISION_ID : ID de la révision à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.

Exporter le contenu d'un document Google Workspace à l'aide d'opérations de longue durée

Pour exporter le contenu d'un document Google Workspace à l'aide d'opérations de longue durée (OLD), utilisez la files.download méthode avec l'ID du fichier à télécharger et l'ID de la révision. Pour en savoir plus, consultez Gérer les opérations de longue durée.

curl

La commande curl suivante lance une OLD et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette OLD, vous devez effectuer une autre requête à l'aide de l'ID renvoyé afin d'obtenir l'URL du contenu. Vous pouvez ensuite effectuer une dernière requête curl à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.

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"

Remplacez les éléments suivants :

  • FILE_ID : ID du fichier à télécharger.
  • MIME_TYPE : type MIME vers lequel exporter.
  • REVISION_ID : ID de la révision à télécharger.
  • ACCESS_TOKEN : jeton d'accès qui accorde l'accès à l'API.