Dosya ve klasör arayın

Bir Drive kullanıcısının dosya ve klasörlerinin tümünü veya yalnızca bir kısmını döndürmek için files.list yöntemini kullanın.

Bazı kaynak yöntemleri (ör. files.get ve files.update) için gereken fileId değerini almak amacıyla files.list yöntemini de kullanabilirsiniz.

Geçerli kullanıcının Drive'ım bölümündeki tüm dosyaları ve klasörleri aramak

Tüm dosya ve klasörleri döndürmek için files.list parametresini herhangi bir parametre olmadan kullanın.

Geçerli kullanıcının Drive'ım bölümünde belirli dosyaları veya klasörleri arama

Belirli bir dosya veya klasör grubunu aramak için, q sorgu dizesi alanını files.list ile birlikte kullanarak bir veya daha fazla arama terimini birleştirerek döndürülecek dosyaları filtreleyin.

Bir sorgu dizesi aşağıdaki üç bölümü içerir:

query_term operator values

Burada:

  • query_term, aranacak sorgu terimi veya alanıdır. Ortak Drive'ları filtrelemek için kullanılabilecek sorgu terimlerini görüntülemek için Arama sorgusu terimleri ve operatörleri bölümüne bakın.

  • operator, sorgu teriminin koşulunu belirtir. Her bir sorgu terimiyle hangi operatörleri kullanabileceğinizi görmek için Sorgu operatörleri bölümüne bakın.

  • values, arama sonuçlarınızı filtrelemek için kullanmak istediğiniz belirli değerlerdir.

Örneğin, aşağıdaki sorgu dizesi, aramayı yalnızca klasörleri döndürecek şekilde filtreler:

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

Aşağıdaki örnekte, arama sonuçlarını JPEG dosyalarının dosya adlarına ve kimliklerine göre filtrelemek için bir istemci kitaplığının nasıl kullanılacağı gösterilmektedir. Bu örnekte, sonuçları image/jpeg türündeki dosyalara göre daraltmak için mimeType sorgu terimi kullanılmaktadır. Bu örnekte ayrıca, aramayı Drive alanı ile sınırlamak için spaces drive olarak ayarlanır. nextPageToken, null değerini döndürdüğünde başka sonuç yoktur.

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

Aramayı klasörlerle kısıtlamak için sorgu dizesini kullanarak MIME türünü q: mimeType = 'application/vnd.google-apps.folder' olarak ayarlayın.

MIME türleri hakkında daha fazla bilgi edinmek için Google Workspace ve Google Drive tarafından desteklenen MIME türleri başlıklı makaleye göz atın.

Sorgu dizesi örnekleri

Bu tabloda bazı temel sorgu dizeleri gösterilmektedir. Asıl kod, aramanız için kullandığınız istemci kitaplığına göre değişiklik gösterir.

Sorgulamak istediğiniz şey Örnek
"hello" adlı dosyalar name = 'hello'
Adı "merhaba" ve "hoşça kal" kelimelerini içeren dosyalar name contains 'hello' and name contains 'goodbye'
Adı "merhaba" kelimesini içermeyen dosyalar not name contains 'hello'
Google uygulamaları olan veya klasör MIME türüne sahip klasörler mimeType = 'application/vnd.google-apps.folder'
Klasör olmayan dosyalar mimeType != 'application/vnd.google-apps.folder'
Çöp kutusunda "önemli" metnini içeren dosyalar fullText contains 'important' and trashed = true
"merhaba" kelimesini içeren dosyalar fullText contains 'hello'
"hello" kelimesini içermeyen dosyalar not fullText contains 'hello'
"merhaba dünya" tam kelime öbeğini içeren dosyalar fullText contains '"hello world"'
"\" karakterini içeren bir sorguya sahip dosyalar (ör. "\yazarlar") fullText contains '\\authors'
Bir koleksiyonda kimliğe sahip dosyalar, ör. parents koleksiyonu '1234567' in parents
Bir koleksiyondaki uygulama verileri klasöründe bulunan dosyalar 'appDataFolder' in parents
"test@example.org" kullanıcısının yazma iznine sahip olduğu dosyalar 'test@example.org' in writers
"group@example.org" grubunun üyelerinin yazma iznine sahip olduğu dosyalar 'group@example.org' in writers
Belirli bir tarihten sonra değiştirilen dosyalar modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
Adında "merhaba" ifadesi bulunan yetkili kullanıcıyla paylaşılan dosyalar sharedWithMe and name contains 'hello'
Hiç kimseyle veya alanlarla paylaşılmayan (yalnızca gizli ya da belirli kullanıcılar veya gruplarla paylaşılmış) dosyalar visibility = 'limited'
Belirli bir tarihten sonra değiştirilen resim veya video dosyaları modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

Özel dosya özelliği olan dosyaları arama

Özel dosya özelliğine sahip dosyaları aramak için appProperties arama sorgusu terimini anahtar ve değer ile kullanın. Örneğin, additionalID adlı ve 8e8aceg2af2ge72e78 değerine sahip özel bir dosya özelliğini aramak için:

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

Özel dosya özellikleri hakkında daha fazla bilgi için Özel dosya özellikleri ekleme bölümüne bakın.

Belirli bir etikete veya alan değerine sahip dosyaları arama

Belirli etiketlere sahip dosyaları aramak için belirli bir etiket kimliğiyle labels arama sorgusu terimini kullanın. Örneğin: 'labels/LABEL_ID' in labels

Belirli bir etiket kimliğine sahip olmayan dosyaları aramak için: Not 'labels/LABEL_ID' in labels

Dosyaları belirli alan değerlerine göre de arayabilirsiniz. Örneğin, metin değeri olan dosyaları aramak için: labels/LABEL_ID.text_field_id = 'TEXT'

Daha fazla bilgi için Belirli bir etikete veya alan değerine sahip dosyaları arama bölümünü inceleyin.

Dosyada arama yapın

files.list çağrısı yapan aramalar varsayılan olarak user kitaplığını kullanır. BirGoogle Workspace alanıyla paylaşılan dosyalar gibi diğer kurumlarda arama yapmak için corpora parametresini kullanın.

Tek bir sorguda birden çok veri kümesi aranabilir, ancak birleştirilen topluluğun çok büyük olması halinde eksik sonuçlar döndürülebilir. incompleteSearch sonucu true ise tüm dokümanlar döndürülmemiştir.