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

يمكنك استخدام طريقة 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
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;
    }
}

لحصر البحث على المجلدات، استخدِم سلسلة طلب البحث لضبط نوع 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'
ملفات تحتوي على عبارة "أهلاً بالعالم" 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، لن يتم عرض جميع المستندات.