Menelusuri file dan folder

Google Drive API mendukung beberapa cara untuk menelusuri file dan folder.

Anda dapat menggunakan metode files.list untuk menampilkan semua atau beberapa file dan folder pengguna Drive. files.list juga dapat digunakan untuk mengambil fileId yang diperlukan untuk beberapa resource (seperti files.get dan files.update).

Telusuri semua file dan folder di Drive Saya pengguna saat ini

Gunakan metode files.list tanpa parameter apa pun untuk menampilkan semua file dan folder.

GET https://www.googleapis.com/drive/v3/files

Menelusuri file atau folder tertentu di Drive Saya milik pengguna saat ini

Untuk menelusuri kumpulan file atau folder tertentu, gunakan kolom q string kueri dengan metode files.list untuk memfilter file yang akan dikembalikan dengan menggabungkan satu atau lebih istilah pencarian.

String kueri berisi tiga bagian berikut:

query_term operator values

Dengan keterangan:

  • query_term adalah kolom atau istilah kueri yang akan ditelusuri.

  • operator menentukan kondisi untuk istilah kueri.

  • values adalah nilai spesifik yang ingin Anda gunakan untuk memfilter penelusuran hasil pengujian tersebut.

Untuk melihat istilah dan operator kueri yang dapat Anda gunakan dengan file dan folder filter, lihat Istilah dan operator kueri penelusuran.

Misalnya, string kueri berikut memfilter penelusuran agar hanya menampilkan folder dengan menyetel jenis MIME:

q: mimeType = 'application/vnd.google-apps.folder'

Untuk informasi selengkapnya tentang jenis MIME, lihat Google Workspace dan Google Drive jenis MIME yang didukung.

Contoh string kueri

Tabel berikut mencantumkan contoh beberapa string kueri dasar. Kode sebenarnya berbeda-beda bergantung pada library klien yang digunakan untuk penelusuran Anda.

Anda juga harus meng-escape karakter khusus dalam nama file untuk memastikan dan kueri berfungsi dengan benar. Misalnya, jika nama file berisi apostrof (') dan karakter garis miring terbalik ("\"), gunakan garis miring terbalik untuk meng-escape: name contains 'quinn\'s paper\\essay'.

Hal yang ingin Anda kueri Contoh
File dengan nama "hello" name = 'hello'
File dengan nama yang berisi kata "halo" dan "selamat tinggal" name contains 'hello' and name contains 'goodbye'
File dengan nama yang tidak berisi kata "halo" not name contains 'hello'
File yang berisi teks "penting" dan di folder sampah fullText contains 'important' and trashed = true
File yang berisi kata "halo" fullText contains 'hello'
File yang tidak memiliki kata "halo" not fullText contains 'hello'
File yang berisi frasa yang sama persis "halo dunia" fullText contains '"hello world"'
File dengan kueri yang berisi karakter "\" karakter (misalnya, "\authors") fullText contains '\\authors'
File yang merupakan folder mimeType = 'application/vnd.google-apps.folder'
File yang bukan folder mimeType != 'application/vnd.google-apps.folder'
File yang diubah setelah tanggal tertentu (zona waktu default adalah UTC) modifiedTime > '2012-06-04T12:00:00'
File gambar atau video yang diubah setelah tanggal tertentu modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')
File yang diberi bintang starred = true
File dalam koleksi (misalnya, ID folder dalam koleksi parents) '1234567' in parents
File dalam folder data aplikasi dalam koleksi 'appDataFolder' in parents
File yang penggunanya "test@example.org" adalah pemilik 'test@example.org' in owners
File yang penggunanya "test@example.org" memiliki izin tulis 'test@example.org' in writers
File yang digunakan anggota grup "group@example.org" memiliki izin tulis 'group@example.org' in writers
File yang dibagikan kepada pengguna yang diotorisasi dengan pesan "hello" atas nama sharedWithMe and name contains 'hello'
File dengan properti file kustom yang dapat dilihat oleh semua aplikasi properties has { key='mass' and value='1.3kg' }
File dengan properti file kustom yang bersifat pribadi untuk aplikasi yang meminta appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
File yang belum dibagikan kepada siapa pun atau domain (hanya pribadi, atau dibagikan kepada pengguna atau grup tertentu) visibility = 'limited'

Memfilter hasil penelusuran dengan library klien

Contoh kode berikut menunjukkan cara menggunakan library klien untuk memfilter penelusuran nama file dan ID file JPEG. Contoh ini menggunakan mimeType istilah kueri untuk mempersempit hasil ke file berjenis image/jpeg. Ini juga menetapkan spaces hingga drive untuk lebih mempersempit penelusuran ke Drive YouTube. Saat nextPageToken menampilkan null, tidak ada hasil lagi.

Java

drive/snippets/drive_v3/src/main/java/SearchFile.java
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.api.services.drive.model.File;
import com.google.api.services.drive.model.FileList;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* Class to demonstrate use-case of search files. */
public class SearchFile {

  /**
   * Search for specific set of files.
   *
   * @return search result list.
   * @throws IOException if service account credentials file not found.
   */
  public static List<File> searchFile() 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();

    List<File> files = new ArrayList<File>();

    String pageToken = null;
    do {
      FileList result = service.files().list()
          .setQ("mimeType='image/jpeg'")
          .setSpaces("drive")
          .setFields("nextPageToken, items(id, title)")
          .setPageToken(pageToken)
          .execute();
      for (File file : result.getFiles()) {
        System.out.printf("Found file: %s (%s)\n",
            file.getName(), file.getId());
      }

      files.addAll(result.getFiles());

      pageToken = result.getNextPageToken();
    } while (pageToken != null);

    return files;
  }
}

Python

drive/snippets/drive-v3/file_snippet/search_file.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def search_file():
  """Search file in drive 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)
    files = []
    page_token = None
    while True:
      # pylint: disable=maybe-no-member
      response = (
          service.files()
          .list(
              q="mimeType='image/jpeg'",
              spaces="drive",
              fields="nextPageToken, files(id, name)",
              pageToken=page_token,
          )
          .execute()
      )
      for file in response.get("files", []):
        # Process change
        print(f'Found file: {file.get("name")}, {file.get("id")}')
      files.extend(response.get("files", []))
      page_token = response.get("nextPageToken", None)
      if page_token is None:
        break

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

  return files


if __name__ == "__main__":
  search_file()

Node.js

drive/snippets/drive_v3/file_snippets/search_file.js
/**
 * Search file in drive location
 * @return{obj} data file
 * */
async function searchFile() {
  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});
  const files = [];
  try {
    const res = await service.files.list({
      q: 'mimeType=\'image/jpeg\'',
      fields: 'nextPageToken, files(id, name)',
      spaces: 'drive',
    });
    Array.prototype.push.apply(files, res.files);
    res.data.files.forEach(function(file) {
      console.log('Found file:', file.name, file.id);
    });
    return res.data.files;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

PHP

drive/snippets/drive_v3/src/DriveSearchFiles.php
use Google\Client;
use Google\Service\Drive;
function searchFiles()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $files = array();
        $pageToken = null;
        do {
            $response = $driveService->files->listFiles(array(
                'q' => "mimeType='image/jpeg'",
                'spaces' => 'drive',
                'pageToken' => $pageToken,
                'fields' => 'nextPageToken, files(id, name)',
            ));
            foreach ($response->files as $file) {
                printf("Found file: %s (%s)\n", $file->name, $file->id);
            }
            array_push($files, $response->files);

            $pageToken = $response->pageToken;
        } while ($pageToken != null);
        return $files;
    } catch(Exception $e) {
       echo "Error Message: ".$e;
    }
}

Menelusuri file dengan properti file kustom

Untuk menelusuri file dengan properti file kustom, gunakan properties atau istilah kueri penelusuran appProperties dengan kunci dan nilai. Misalnya, untuk telusuri properti file kustom yang bersifat pribadi bagi aplikasi yang meminta, yang disebut additionalID dengan nilai 8e8aceg2af2ge72e78:

appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }

Untuk informasi selengkapnya, lihat Menambahkan file kustom properti.

Menelusuri file dengan label atau nilai kolom tertentu

Untuk menelusuri file dengan label tertentu, gunakan istilah kueri penelusuran labels dengan ID label tertentu. Contoh: 'labels/LABEL_ID' in labels. Jika berhasil, isi respons berisi semua instance file dengan label diterapkan.

Untuk menelusuri file tanpa ID label tertentu: Not 'labels/LABEL_ID' in labels.

Anda juga dapat menelusuri file berdasarkan nilai kolom tertentu. Misalnya, untuk cari file dengan nilai teks: labels/LABEL_ID.text_field_id ='TEXT'.

Untuk informasi selengkapnya, lihat Menelusuri file dengan label atau kolom tertentu nilai.

Telusuri korpora

Penelusuran yang memanggil files.list menggunakan corpora dari user secara default. Untuk menelusuri korpora lain, seperti file yang dibagikan ke domain, menetapkan corpora .

Beberapa korpora dapat ditelusuri dalam satu kueri, meskipun hasil yang tidak lengkap mungkin dikembalikan jika korpora gabungan terlalu besar. Jika incompleteSearch adalah true dalam isi respons, maka semua dokumen tidak ditampilkan. Jika ini Anda harus mempersempit kueri Anda dengan memilih korpora yang berbeda seperti user atau drive.