Mendownload dan mengekspor file

Google Drive API mendukung beberapa jenis tindakan download dan ekspor, seperti yang tercantum dalam tabel berikut:

Tindakan download
Konten file blob menggunakan metode files.get dengan parameter alt=media.
Konten file blob pada versi sebelumnya menggunakan metode revisions.get dengan parameter alt=media.
Konten file blob di browser menggunakan kolom webContentLink.
Konten file blob menggunakan metode files.download menggunakan operasi yang berjalan lama. Ini adalah satu-satunya cara untuk mendownload file Google Vids.
Tindakan ekspor
Konten dokumen Google Workspace dalam format yang dapat ditangani aplikasi Anda, menggunakan metode files.export.
Konten dokumen Google Workspace di browser menggunakan kolom exportLinks.
Konten dokumen Google Workspace pada versi sebelumnya di browser menggunakan kolom exportLinks.
Konten dokumen Google Workspace menggunakan metode files.download menggunakan operasi yang berjalan lama.

Di Drive API, file blob merujuk ke file biner mentah apa pun yang disimpan di Google Drive (seperti gambar, video, dan PDF) dan bukan dokumen Google Workspace. Objek ini tidak merujuk pada objek Blob JavaScript. Untuk deskripsi mendetail tentang jenis file yang disebutkan di sini, termasuk file blob dan Google Workspace, lihat Jenis file.

Sebelum mendownload atau mengekspor konten file, verifikasi bahwa pengguna dapat mendownload file menggunakan kolom capabilities.canDownload di resource files.

Bagian selanjutnya dari dokumen ini memberikan petunjuk mendetail untuk melakukan jenis tindakan download dan ekspor ini.

Mendownload konten file blob

Untuk mendownload file blob yang disimpan di Drive, gunakan metode files.get dengan ID file yang akan didownload dan parameter alt sistem. Parameter alt=media memberi tahu server bahwa download konten sedang diminta sebagai format respons alternatif.

Parameter sistem alt tersedia di semua Google REST API. Jika menggunakan library klien Drive API, Anda tidak perlu menetapkan parameter ini secara eksplisit karena metode library klien menambahkan parameter alt=media ke permintaan HTTP yang mendasarinya.

Contoh kode berikut menunjukkan cara menggunakan metode files.get untuk mendownload file:

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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.
  • FILE_NAME: nama file output.

Download file yang dimulai dari aplikasi Anda harus diotorisasi dengan cakupan yang memungkinkan akses baca ke konten file. Misalnya, aplikasi yang menggunakan cakupan drive.readonly.metadata tidak diizinkan untuk mendownload konten file. Contoh kode library klien menggunakan cakupan file drive terbatas yang memungkinkan pengguna melihat dan mengelola semua file Drive Anda. Untuk mempelajari lebih lanjut cakupan Drive, lihat Memilih cakupan Google Drive API.

Pengguna dengan izin owner (untuk file Drive Saya) atau izin organizer (untuk file drive bersama) dapat membatasi download melalui objek DownloadRestrictionsMetadata. Untuk mengetahui informasi selengkapnya, lihat Mencegah pengguna mendownload, mencetak, atau menyalin file Anda.

File yang diidentifikasi sebagai melanggar (seperti software berbahaya) hanya dapat didownload oleh pemilik file. Selain itu, parameter kueri acknowledgeAbuse harus disetel ke true untuk menunjukkan bahwa pengguna telah mengetahui risiko mendownload software yang berpotensi tidak diinginkan atau file berbahaya lainnya. Aplikasi Anda harus memperingatkan pengguna secara interaktif sebelum menggunakan parameter kueri ini.

Mengakses data file dalam memori

Jika aplikasi Anda harus mengakses data file secara langsung dalam memori (misalnya, sebagai buffer byte) daripada menyimpannya ke disk lokal, Anda dapat menyesuaikan permintaan library klien atau memproses aliran yang ditampilkan:

  • Node.js: Secara default, library klien Node.js menampilkan konten file sebagai aliran Readable. Untuk menyimpan file ke disk lokal:

    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);
    

    Atau, untuk menampilkan data secara langsung dalam memori sebagai ArrayBuffer bukan sebagai aliran, tetapkan parameter responseType dalam opsi permintaan Anda:

    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: Contoh kode Python untuk mendownload file blob sudah menulis potongan download ke objek io.BytesIO() dalam memori. Untuk mengakses byte mentah, panggil file.getvalue().

  • Java: Contoh kode Java untuk mendownload file blob menggunakan java.io.ByteArrayOutputStream untuk merekam byte yang didownload dalam memori. Gunakan outputStream.toByteArray() untuk mengakses array byte mentah.

  • .NET: Contoh kode C# untuk mendownload file blob menggunakan System.IO.MemoryStream. Gunakan stream.ToArray() untuk mengakses array byte yang mendasarinya.

  • Apps Script: Contoh kode Apps Script untuk mendownload file blob menggunakan metode response.getBlob() untuk menampilkan objek Blob. Konversikan ini menjadi array byte menggunakan metode getBytes().

Download sebagian

Download sebagian melibatkan download hanya sebagian file yang ditentukan. Anda dapat menentukan bagian file yang ingin didownload menggunakan rentang byte dengan header Range. Contoh:

Range: bytes=500-999

Mendownload konten file blob pada versi sebelumnya

Untuk mendownload konten file blob pada versi sebelumnya, gunakan metode revisions.get dengan ID file yang akan didownload, ID revisi, dan alt parameter sistem. Parameter alt=media memberi tahu server bahwa download konten sedang diminta sebagai format respons alternatif. Mirip dengan files.get, metode revisions.get juga menerima parameter kueri acknowledgeAbuse dan header Range.

Anda hanya dapat mendownload revisi konten file blob yang ditandai sebagai "Simpan Selamanya". Jika Anda ingin mendownload revisi, tetapkan revisi tersebut ke "Simpan Selamanya" terlebih dahulu. Untuk mengetahui informasi selengkapnya, lihat Menentukan revisi yang akan disimpan dari penghapusan otomatis.

Untuk informasi tambahan tentang cara mendownload revisi, lihat Mengelola operasi yang berjalan lama.

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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • REVISION_ID: ID revisi yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.
  • FILE_NAME: nama file output.

Mendownload konten file blob di browser

Untuk mendownload konten file blob yang disimpan di Drive dalam browser, bukan melalui API, gunakan kolom webContentLink dari resource files. Jika pengguna memiliki akses download ke file, link untuk mendownload file dan isinya akan ditampilkan. Anda dapat mengalihkan pengguna ke URL ini, atau menawarkannya sebagai link yang dapat diklik.

curl

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

Ganti kode berikut:

  • FILE_ID: ID file untuk mendapatkan link download.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.

Mendownload konten file blob menggunakan operasi yang berjalan lama

Untuk mendownload konten file blob menggunakan operasi yang berjalan lama (LRO), gunakan metode files.download dengan ID file yang akan didownload. Anda dapat menetapkan ID revisi secara opsional.

Ini adalah satu-satunya cara untuk mendownload file Google Vids. Jika Anda mencoba mengekspor file Google Vids, Anda akan menerima error fileNotExportable. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.

curl

Perintah curl berikut memulai LRO dan menampilkan respons JSON. Untuk mendownload file atau melakukan polling LRO ini, Anda harus membuat permintaan lain menggunakan ID yang ditampilkan untuk mendapatkan URL konten. Kemudian, Anda dapat membuat permintaan curl akhir ke URL tersebut untuk mendownload file. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.

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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.

Mengekspor konten dokumen Google Workspace

Untuk mengekspor konten byte dokumen Google Workspace, gunakan metode files.export dengan ID file yang akan diekspor dan jenis MIME yang benar. Konten yang diekspor dibatasi hingga 10 MB.

Contoh kode berikut menunjukkan cara menggunakan metode files.export untuk mengekspor dokumen Google Workspace dalam 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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.
  • FILE_NAME: nama file output.

Contoh kode library klien menggunakan cakupan drive yang dibatasi yang memungkinkan pengguna melihat dan mengelola semua file Drive Anda. Untuk mempelajari lebih lanjut cakupan Drive, lihat Memilih cakupan Google Drive API.

Contoh kode juga mendeklarasikan jenis MIME ekspor sebagai application/pdf. Untuk daftar lengkap semua jenis MIME ekspor yang didukung untuk setiap dokumen Google Workspace, lihat Jenis MIME ekspor untuk dokumen Google Workspace.

Mengekspor konten dokumen Google Workspace di browser

Untuk mengekspor konten dokumen Google Workspace dalam browser, gunakan kolom exportLinks dari resource files. Bergantung pada jenis dokumen, link untuk mendownload file dan isinya akan ditampilkan untuk setiap jenis MIME yang tersedia. Anda dapat mengalihkan pengguna ke URL, atau menawarkannya sebagai link yang dapat diklik.

curl

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

Ganti kode berikut:

  • FILE_ID: ID file untuk mendapatkan link download.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.

Mengekspor konten dokumen Google Workspace pada versi sebelumnya di browser

Untuk mengekspor konten dokumen Google Workspace dalam versi sebelumnya di dalam browser, gunakan metode revisions.get dengan ID file yang akan didownload dan ID revisi untuk membuat link ekspor yang dapat Anda gunakan untuk mendownload. Jika pengguna memiliki akses download ke file, link untuk mendownload file dan isinya akan ditampilkan. Anda dapat mengarahkan pengguna ke URL ini, atau menawarkannya sebagai link yang dapat diklik.

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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • REVISION_ID: ID revisi yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.

Mengekspor konten dokumen Google Workspace menggunakan operasi yang berjalan lama

Untuk mengekspor konten dokumen Google Workspace menggunakan operasi yang berjalan lama (LRO), gunakan metode files.download dengan ID file yang akan didownload dan ID revisi. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.

curl

Perintah curl berikut memulai LRO dan menampilkan respons JSON. Untuk mendownload file atau melakukan polling LRO ini, Anda harus membuat permintaan lain menggunakan ID yang ditampilkan untuk mendapatkan URL konten. Kemudian, Anda dapat membuat permintaan curl akhir ke URL tersebut untuk mendownload file. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.

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"

Ganti kode berikut:

  • FILE_ID: ID file yang akan didownload.
  • MIME_TYPE: jenis MIME yang akan diekspor.
  • REVISION_ID: ID revisi yang akan didownload.
  • ACCESS_TOKEN: token akses yang memberikan akses ke API.