البحث عن الملفات والمجلدات

يمكنك استخدام طريقة files.list لعرض جميع ملفات ومجلدات مستخدم Drive أو بعضها فقط.

يمكنك أيضًا استخدام الطريقة files.list لاسترداد fileId المطلوبة لبعض طرق الموارد (مثل files.get وfiles.update).

البحث عن جميع الملفات والمجلدات في قسم "ملفاتي" للمستخدم الحالي

استخدِم files.list بدون أي معلَمات لعرض جميع الملفات والمجلدات.

البحث عن ملفات أو مجلدات محدّدة في قسم "ملفاتي" لدى المستخدم الحالي

للبحث عن مجموعة معيّنة من الملفات أو المجلدات، استخدِم حقل سلسلة طلب البحث q مع files.list لفلترة الملفات التي تريد عرضها من خلال دمج عبارة بحث واحدة أو أكثر.

تحتوي سلسلة الاستعلام على الأجزاء الثلاثة التالية:

query_term operator values

المكان:

  • query_term هي عبارة أو حقل طلب البحث الذي تريد البحث عنه. للاطّلاع على عبارات طلبات البحث التي يمكن استخدامها لفلترة مساحات التخزين السحابي المشتركة، يُرجى الرجوع إلى عبارات طلبات البحث وعوامل تشغيلها.

  • تحدد operator شرط عبارة طلب البحث. للاطِّلاع على عوامل التشغيل التي يمكنك استخدامها مع كل عبارة طلب بحث، يُرجى الرجوع إلى عوامل تشغيل طلب البحث.

  • values هي القيم المحددة التي تريد استخدامها لفلترة نتائج البحث.

على سبيل المثال، تُفلتر سلسلة طلب البحث التالية البحث لعرض المجلدات فقط:

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

يوضح المثال التالي كيفية استخدام مكتبة البرامج لتصفية نتائج البحث إلى أسماء الملفات ومعرفات ملفات JPEG. يستخدم هذا المثال عبارة الاستعلام mimeType لتضييق نطاق النتائج لتقتصر على ملفات من النوع image/jpeg. يؤدي هذا المثال أيضًا إلى ضبط spaces على drive لتضييق نطاق البحث بحيث يقتصر على مساحة Drive. عندما تعرض nextPageToken القيمة null، لا توجد نتائج أخرى.

لغة 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
from __future__ import print_function

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

‫2,999

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

لحصر البحث على المجلدات، استخدِم سلسلة طلب البحث لضبط نوع MIME على q: mimeType = 'application/vnd.google-apps.folder'

لمزيد من المعلومات حول أنواع MIME، يُرجى الاطّلاع على أنواع MIME المتوافقة مع Google Workspace وGoogle Drive.

أمثلة على سلسلة طلب البحث

يعرض هذا الجدول بعض سلاسل الاستعلام الأساسية. تختلف التعليمة البرمجية الفعلية بناءً على مكتبة البرامج التي تستخدمها في البحث.

ما تريد الاستعلام عنه مثال
ملفات تحمل الاسم "مرحبًا" name = 'hello'
ملفات باسم يحتوي على الكلمتين "مرحبًا" و "وداعًا" name contains 'hello' and name contains 'goodbye'
ملفات باسم لا يحتوي على الكلمة "مرحبًا" not name contains 'hello'
المجلدات من تطبيقات Google أو المجلدات من نوع MIME mimeType = 'application/vnd.google-apps.folder'
الملفات التي ليست مجلدات mimeType != 'application/vnd.google-apps.folder'
الملفات التي تحتوي على النص "مهم" وفي المهملات fullText contains 'important' and trashed = true
الملفات التي تحتوي على كلمة "مرحبًا" fullText contains 'hello'
الملفات التي لا تحتوي على كلمة "مرحبًا" not fullText contains 'hello'
ملفات تحتوي على العبارة "hello world" بالضبط fullText contains '"hello world"'
الملفات التي تحتوي على استعلام يحتوي على الحرف "\" (على سبيل المثال، " \authors" fullText contains '\\authors'
الملفات التي تحتوي على معرّف ضمن مجموعة، مثل مجموعة في parents '1234567' in parents
الملفات في مجلد بيانات التطبيق في مجموعة 'appDataFolder' in parents
الملفات التي حصل المستخدم "test@example.org" على إذن بالتعديل فيها 'test@example.org' in writers
الملفات التي يحصل أعضاء المجموعة "group@example.org" على إذن بالتعديل فيها 'group@example.org' in writers
الملفات التي تم تعديلها بعد تاريخ محدّد modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
الملفات التي تمت مشاركتها مع المستخدم المفوَّض مع كتابة "مرحبًا" في الاسم sharedWithMe and name contains 'hello'
الملفات التي لم تتم مشاركتها مع أي شخص أو نطاقات (خاص فقط أو تمت مشاركتها مع مستخدمين أو مجموعات محددة) visibility = 'limited'
ملفات الصور أو الفيديوهات التي تم تعديلها بعد تاريخ محدّد modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

البحث عن الملفات باستخدام خاصية ملف مُخصَّصة

للبحث عن الملفات باستخدام خاصية ملف مُخصَّصة، استخدِم عبارة طلب البحث appProperties مع مفتاح وقيمة. على سبيل المثال، للبحث عن خاصية ملف مخصصة تُسمى additionalID بقيمة 8e8aceg2af2ge72e78:

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

للمزيد من المعلومات عن خصائص الملف المُخصّص، راجع إضافة خصائص ملفات مخصَّصة.

البحث عن الملفات التي تحمل تصنيفًا أو قيمة حقل محدَّدة

للبحث عن الملفات ذات التصنيفات المحددة، يمكنك استخدام عبارة طلب البحث labels مع رقم تعريف تصنيف محدد. مثال: 'labels/LABEL_ID' in labels

للبحث عن الملفات بدون رقم تعريف تصنيف محدَّد: Not 'labels/LABEL_ID' in labels

ويمكنك أيضًا البحث عن الملفات استنادًا إلى قيم حقول محددة. على سبيل المثال، للبحث عن ملفات ذات قيمة نصية: labels/LABEL_ID.text_field_id = 'TEXT'

وللحصول على مزيد من المعلومات، يُرجى الاطّلاع على البحث عن الملفات التي تحمل تصنيفًا أو قيمة حقل معيّنة.

البحث في المجموعات

إنّ عمليات البحث التي تستدعي files.list تستخدم مجموعة user بشكل تلقائي. للبحث في مجموعات أخرى، مثل الملفات التي تمت مشاركتها مع نطاقGoogle Workspace ، يمكنك استخدام المَعلمة corpora.

يمكن البحث في مجموعات متعددة في استعلام واحد، على الرغم من أنه قد يتم عرض نتائج غير مكتملة إذا كان المجموعات المجمّعة كبيرة جدًا. إذا كانت النتيجة incompleteSearch هي true، لن يتم عرض كل المستندات.