Dosya ve klasör arayın

Google Drive API'si, dosya ve klasör aramak için çeşitli yöntemleri destekler.

Geri dönmek için files.list yöntemini kullanabilirsiniz Drive kullanıcısının dosya ve klasörlerinin tamamı veya bir kısmı. files.list yöntemi, bazı kaynaklar için gerekli olan fileId değerini almak amacıyla da kullanılabilir yöntemler (ör. files.get ve files.update) dokunun.

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

Tüm dosyaları ve tüm dosyaları döndürmek için parametre olmadan files.list yöntemini kullanın. klasörlerini tıklayın.

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

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 sorgu dizesi q alanını kullanın files.list yöntemiyle bir veya daha fazla arama terimini birleştirerek döndürülecek dosyaları bulun.

Bir sorgu dizesi aşağıdaki üç bölümden oluşur:

query_term operator values

Burada:

  • query_term, arama için kullanılacak sorgu terimi veya alanıdır.

  • operator, sorgu teriminin koşulunu belirtir.

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

Filtre dosyalarını ve klasörlerini kullanabileceğiniz sorgu terimlerini ve operatörleri görüntülemek için Arama sorgusu terimleri ve operatörleri başlıklı makaleyi inceleyin.

Örneğin, aşağıdaki sorgu dizesi, aramayı yalnızca sonuç döndürecek şekilde filtreler klasörlerini tanımlamak için:

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

MIME türleri hakkında daha fazla bilgi için Google Workspace ve Google Drive sayfasına bakın desteklenen MIME türleri.

Sorgu dizesi örnekleri

Aşağıdaki tabloda bazı temel sorgu dizelerine ilişkin örnekler listelenmiştir. Asıl kod , aramanız için kullandığınız istemci kitaplığına bağlı olarak farklılık gösterir.

Ayrıca dosya adlarında özel karakterler kullanmaktan da sorgu doğru şekilde çalışıyor. Örneğin, bir dosya adında hem kesme işareti hem de (') ve ters eğik çizgi ("\") karakteri içeriyorsa, bunlar için ters eğik çizgi kullanın: name contains 'quinn\'s paper\\essay'.

Sorgulamak istediğiniz şey Örnek
"hello" adlı dosyalar name = 'hello'
"Merhaba" kelimelerini içeren bir ada sahip dosyalar ve "hoşça kalın" name contains 'hello' and name contains 'goodbye'
Adı "merhaba" kelimesini içermeyen dosyalar not name contains 'hello'
"Önemli" metnini içeren dosyalar ve çöp kutusunda fullText contains 'important' and trashed = true
"Merhaba" kelimesini içeren dosyalar fullText contains 'hello'
"Merhaba" kelimesini içermeyen dosyalar not fullText contains 'hello'
Tam olarak "merhaba dünya" ifadesini içeren dosyalar fullText contains '"hello world"'
"\" içeren sorgu içeren dosyalar karakter (örneğin, "\authors") fullText contains '\\authors'
Klasör olan dosyalar mimeType = 'application/vnd.google-apps.folder'
Klasör olmayan dosyalar mimeType != 'application/vnd.google-apps.folder'
Belirli bir tarihten sonra değiştirilen dosyalar (varsayılan saat dilimi UTC'dir) modifiedTime > '2012-06-04T12:00:00'
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/')
Yıldızlı dosyalar starred = true
Bir koleksiyondaki dosyalar (örneğin, parents koleksiyonundaki klasör kimliği) '1234567' in parents
Bir koleksiyondaki uygulama verileri klasöründeki dosyalar 'appDataFolder' in parents
"test@example.org" kullanıcısının bulunduğu dosyalar sahibidir 'test@example.org' in owners
"test@example.org" kullanıcısının bulunduğu dosyalar yazma iznine sahip 'test@example.org' in writers
"grup@example.org" grubunun üyelerine ait dosyalar yazma iznine sahip 'group@example.org' in writers
Yetkili kullanıcıyla "hello" mesajıyla paylaşılan dosyalar adında sharedWithMe and name contains 'hello'
Tüm uygulamalar tarafından görülebilen özel dosya özelliğine sahip dosyalar properties has { key='mass' and value='1.3kg' }
İstekte bulunan uygulamaya özel özel dosya özelliğine sahip dosyalar appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
Herhangi bir kişiyle veya alanla paylaşılmayan (yalnızca gizli ya da belirli kullanıcılar veya gruplarla paylaşılmış) dosyalar visibility = 'limited'

Arama sonuçlarını istemci kitaplığıyla filtreleme

Aşağıdaki kod örneğinde, aramayı filtrelemek için istemci kitaplığının nasıl kullanılacağı gösterilmektedir dosya adlarına ve JPEG dosyalarının kimliklerine dönüştürülecektir. Bu örnekte mimeType kullanılıyor sonuçları image/jpeg türündeki dosyalara göre daraltmak için sorgu terimi. Aynı zamanda Aramayı Drive ile daha da daraltmak için spaces - drive alanı tıklayın. nextPageToken, null değerini döndürdüğünde, başka sonuç yok.

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

Özel dosya özelliğine sahip dosyaları arama

Özel dosya özelliğine sahip dosyaları aramak için properties veya bir anahtar ve değer içeren appProperties arama sorgusu terimi. Örneğin, özel bir dosya özelliğini arayın. Bu özellik, istekte bulunan uygulamaya özel 8e8aceg2af2ge72e78 değerine sahip additionalID:

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

Daha fazla bilgi için Özel dosya ekleme özellikleri hakkında daha fazla bilgi edinin.

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

Belirli etiketlere sahip dosyaları aramak için labels arama sorgusu terimini kullanın. etiket kimliği oluşturabilirsiniz. Örnek: 'labels/LABEL_ID' in labels. Başarılı olursa yanıt gövdesi, etiketi uygulanır.

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

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

Daha fazla bilgi için Belirli bir etikete veya alana sahip dosyaları arama bölümüne bakın değeri için de doğru olduğundan emin olun.

Koleksiyonda ara

files.list çağrısı yapan aramalar Varsayılan olarak corpora/user. Aramak için domain ile paylaşılan dosyalar gibi diğer derlemeler için corpora parametresinden sonra bir değer girin.

Eksik sonuçlar olsa da tek bir sorguda birden çok topluluk aranabilir dosya çok büyükse döndürülebilir. incompleteSearch ise true hatası verildiyse tüm dokümanlar döndürülmedi. Bu gibi farklı bir topluluk seçerek sorgunuzu daraltmanız gerekir. user veya drive.