ফাইল এবং ফোল্ডার অনুসন্ধান করুন

এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে যে, গুগল ড্রাইভ এপিআই কীভাবে ফাইল ও ফোল্ডার অনুসন্ধানের বিভিন্ন পদ্ধতি সমর্থন করে।

আপনি files রিসোর্সের list মেথড ব্যবহার করে কোনো ড্রাইভ ইউজারের সব বা কিছু ফাইল ও ফোল্ডার রিটার্ন করতে পারেন। কিছু রিসোর্স মেথডের (যেমন get মেথড এবং update মেথড) জন্য প্রয়োজনীয় fileId পুনরুদ্ধার করতেও list মেথডটি ব্যবহার করা যায়।

ফিল্ড প্যারামিটার ব্যবহার করুন

রেসপন্সে কোন ফিল্ডগুলো ফেরত আসবে তা নির্দিষ্ট করে দিতে চাইলে, আপনি files রিসোর্সের যেকোনো মেথডের সাথে fields সিস্টেম প্যারামিটারটি সেট করতে পারেন। আপনি যদি fields প্যারামিটারটি বাদ দেন, তাহলে সার্ভার মেথডটির জন্য নির্দিষ্ট কিছু ডিফল্ট ফিল্ড ফেরত দেবে। উদাহরণস্বরূপ, list মেথডটি প্রতিটি ফাইলের জন্য শুধুমাত্র kind , id , name , mimeType , এবং resourceKey ফিল্ডগুলো ফেরত দেয়। ভিন্ন ফিল্ড ফেরত দেওয়ার জন্য, “Return specific fields” দেখুন।

একটি ফাইল নিন

কোনো ফাইল পেতে, files রিসোর্সের get মেথডের সাথে ` fileId পাথ প্যারামিটারটি ব্যবহার করুন। যদি আপনি ফাইল আইডি না জানেন, তবে ` list মেথড ব্যবহার করে সমস্ত ফাইলের তালিকা দেখতে পারেন।

এই মেথডটি ফাইলটিকে একটি files রিসোর্সের ইনস্ট্যান্স হিসেবে রিটার্ন করে। আপনি যদি alt=media কোয়েরি প্যারামিটারটি প্রদান করেন, তাহলে রেসপন্সের বডিতে ফাইলের বিষয়বস্তু অন্তর্ভুক্ত থাকে। ফাইলটি ডাউনলোড বা এক্সপোর্ট করতে, “ফাইল ডাউনলোড এবং এক্সপোর্ট করুন” দেখুন।

পরিচিত ম্যালওয়্যার বা অন্যান্য ক্ষতিকর ফাইল ডাউনলোড করার ঝুঁকি স্বীকার করতে, acknowledgeAbuse কোয়েরি প্যারামিটারটি true তে সেট করুন। এই ফিল্ডটি শুধুমাত্র তখনই প্রযোজ্য হবে যখন alt=media প্যারামিটারটি সেট করা থাকবে এবং ব্যবহারকারী ফাইলটির মালিক অথবা ফাইলটি যে শেয়ার্ড ড্রাইভে রয়েছে তার একজন সংগঠক হবেন।

বর্তমান ব্যবহারকারীর 'মাই ড্রাইভ'-এ থাকা সমস্ত ফাইল ও ফোল্ডার অনুসন্ধান করুন।

কোনো প্যারামিটার ছাড়া list মেথডটি ব্যবহার করলে সমস্ত ফাইল ও ফোল্ডার ফেরত আসবে।

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

বর্তমান ব্যবহারকারীর 'মাই ড্রাইভ'-এ নির্দিষ্ট ফাইল বা ফোল্ডার অনুসন্ধান করুন।

নির্দিষ্ট কোনো ফাইল বা ফোল্ডার খুঁজতে, এক বা একাধিক সার্চ টার্ম একত্রিত করে ফলাফল হিসেবে আসা ফাইলগুলো ফিল্টার করার জন্য list মেথডের সাথে কোয়েরি স্ট্রিং q ফিল্ডটি ব্যবহার করুন।

কোয়েরি স্ট্রিং সিনট্যাক্সে নিম্নলিখিত তিনটি অংশ থাকে:

query_term operator values

কোথায়:

  • query_term হলো অনুসন্ধানের জন্য প্রয়োজনীয় শব্দ বা ক্ষেত্র।

  • operator কোয়েরি টার্মের জন্য শর্ত নির্দিষ্ট করে।

  • values ​​হলো সেই নির্দিষ্ট মানগুলো যা আপনি আপনার অনুসন্ধানের ফলাফল ফিল্টার করতে ব্যবহার করতে চান।

উদাহরণস্বরূপ, নিম্নলিখিত কোয়েরি স্ট্রিংটি MIME টাইপ সেট করার মাধ্যমে সার্চকে ফিল্টার করে শুধুমাত্র ফোল্ডারগুলো ফেরত দেয়:

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

সমস্ত ফাইল কোয়েরি টার্ম দেখতে, ফাইল-নির্দিষ্ট কোয়েরি টার্ম দেখুন।

কোয়েরি তৈরি করতে ব্যবহারযোগ্য সমস্ত কোয়েরি অপারেটর দেখতে, কোয়েরি অপারেটরসমূহ দেখুন।

কোয়েরি স্ট্রিং এর উদাহরণ

নিচের সারণিতে কিছু সাধারণ কোয়েরি স্ট্রিং-এর উদাহরণ দেওয়া হলো। আপনি অনুসন্ধানের জন্য যে ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, তার ওপর নির্ভর করে প্রকৃত কোড ভিন্ন হতে পারে।

কোয়েরিটি সঠিকভাবে কাজ করার জন্য আপনাকে ফাইলের নামে থাকা বিশেষ অক্ষরগুলোকেও এস্কেপ করতে হবে। উদাহরণস্বরূপ, যদি কোনো ফাইলের নামে অ্যাপস্ট্রফি ( ' ) এবং ব্যাকস্ল্যাশ ( "\" ) উভয় অক্ষরই থাকে, তাহলে সেগুলোকে এস্কেপ করার জন্য একটি ব্যাকস্ল্যাশ ব্যবহার করুন: name contains 'quinn\'s paper\\essay'

আপনি যা জিজ্ঞাসা করতে চান উদাহরণ
"হ্যালো" নামের ফাইলগুলি name = 'hello'
যে ফাইলগুলোর নামে 'hello' এবং 'goodbye' শব্দ দুটি রয়েছে name contains 'hello' and name contains 'goodbye'
যে ফাইলগুলোর নামে 'hello' শব্দটি নেই not name contains 'hello'
যে ফাইলগুলোতে "important" লেখাটি আছে এবং যেগুলো ট্র্যাশে রয়েছে fullText contains 'important' and trashed = true
যে ফাইলগুলিতে 'hello' শব্দটি রয়েছে fullText contains 'hello'
যে ফাইলগুলিতে "hello" শব্দটি নেই not fullText contains 'hello'
যে ফাইলগুলিতে হুবহু "hello world" শব্দটি রয়েছে fullText contains '"hello world"'
যেসব ফাইলের কোয়েরিতে "\" অক্ষরটি থাকে (উদাহরণস্বরূপ, "\authors") fullText contains '\\authors'
যে ফাইলগুলো ফোল্ডার mimeType = 'application/vnd.google-apps.folder'
যে ফাইলগুলো ফোল্ডার নয় mimeType != 'application/vnd.google-apps.folder'
একটি নির্দিষ্ট তারিখের পরে পরিবর্তিত ফাইল (ডিফল্ট সময় অঞ্চল হল UTC) modifiedTime > '2012-06-04T12:00:00'
একটি নির্দিষ্ট তারিখের পরে পরিবর্তিত ছবি বা ভিডিও ফাইল modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')
তারকাচিহ্নিত ফাইলগুলি starred = true
একটি সংগ্রহের অন্তর্গত ফাইলসমূহ (উদাহরণস্বরূপ, parents সংগ্রহের ফোল্ডার আইডি) '1234567' in parents
একটি সংগ্রহের অ্যাপ্লিকেশন ডেটা ফোল্ডারের ফাইলগুলি 'appDataFolder' in parents
যে ফাইলগুলির মালিক ব্যবহারকারী "test@example.org" 'test@example.org' in owners
যে ফাইলগুলিতে "test@example.org" ব্যবহারকারীর লেখার অনুমতি আছে 'test@example.org' in writers
যে ফাইলগুলিতে "group@example.org" গ্রুপের সদস্যদের লেখার অনুমতি আছে 'group@example.org' in writers
নামে 'hello' থাকা অনুমোদিত ব্যবহারকারীর সাথে ফাইলগুলি শেয়ার করা হয়েছে। sharedWithMe and name contains 'hello'
কাস্টম ফাইল প্রপার্টি সহ ফাইলগুলি যা সমস্ত অ্যাপের কাছে দৃশ্যমান। properties has { key='mass' and value='1.3kg' }
অনুরোধকারী অ্যাপের জন্য ব্যক্তিগত একটি কাস্টম ফাইল প্রপার্টি সহ ফাইলসমূহ। appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
যে ফাইলগুলি কারও সাথে বা ডোমেনের সাথে শেয়ার করা হয়নি (শুধুমাত্র ব্যক্তিগত, অথবা নির্দিষ্ট ব্যবহারকারী বা গোষ্ঠীর সাথে শেয়ার করা হয়েছে) visibility = 'limited'

ক্লায়েন্ট লাইব্রেরি ব্যবহার করে অনুসন্ধানের ফলাফল ফিল্টার করুন

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে JPEG ফাইলের নাম এবং আইডি অনুসারে অনুসন্ধানের ফলাফল ফিল্টার করা যায়। এই নমুনাটি image/jpeg টাইপের ফাইলগুলিতে ফলাফল সীমাবদ্ধ করতে mimeType কোয়েরি টার্ম ব্যবহার করে। এটি অনুসন্ধানকে আরও সীমাবদ্ধ করে ড্রাইভ স্পেসে নিয়ে যাওয়ার জন্য spaces drive হিসেবে সেট করে। যখন nextPageToken null রিটার্ন করে, তখন আর কোনো ফলাফল দেখানো হয় না।

জাভা

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, files(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;
  }
}

পাইথন

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()

নোড.জেএস

drive/snippets/drive_v3/file_snippets/search_file.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Searches for files in Google Drive.
 * @return {Promise<object[]>} A list of files.
 */
async function searchFile() {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  // Search for files with the specified query.
  const result = await service.files.list({
    q: "mimeType='image/jpeg'",
    fields: 'nextPageToken, files(id, name)',
    spaces: 'drive',
  });

  // Print the name and ID of each found file.
  (result.data.files ?? []).forEach((file) => {
    console.log('Found file:', file.name, file.id);
  });

  return result.data.files ?? [];
}

পিএইচপি

drive/snippets/drive_v3/src/DriveSearchFiles.php
<?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;
    }
}

কাস্টম ফাইল প্রপার্টি ব্যবহার করে ফাইল অনুসন্ধান করুন

কাস্টম ফাইল প্রপার্টি সহ ফাইল অনুসন্ধান করতে, একটি কী এবং ভ্যালু সহ ` properties অথবা ` 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 ' .

আরও তথ্যের জন্য, নির্দিষ্ট লেবেল বা ফিল্ড ভ্যালু দিয়ে ফাইল অনুসন্ধান দেখুন।

কর্পোরা অনুসন্ধান করুন

ডিফল্টরূপে, list মেথড ব্যবহার করার সময় corpora কোয়েরি প্যারামিটারে user আইটেম কালেকশন সেট করা থাকে। অন্যান্য আইটেম কালেকশন, যেমন কোনো domain সাথে শেয়ার করা কালেকশন, সার্চ করার জন্য আপনাকে অবশ্যই corpora প্যারামিটারটি স্পষ্টভাবে সেট করতে হবে।

আপনি একটিমাত্র কোয়েরিতে একাধিক কর্পোরা অনুসন্ধান করতে পারেন; তবে, সম্মিলিত কর্পোরা খুব বড় হলে, এপিআই অসম্পূর্ণ ফলাফল দেখাতে পারে। রেসপন্স বডিতে থাকা incompleteSearch ফিল্ডটি পরীক্ষা করুন। যদি এর মান true , তাহলে কিছু ডকুমেন্ট বাদ পড়ে গেছে। এর সমাধান করতে, user অথবা drive ব্যবহার করে corpora সংকুচিত করুন।

list মেথডে orderBy কোয়েরি প্যারামিটার ব্যবহার করার সময়, বড় আইটেম কালেকশনের কোয়েরির জন্য createdTime কী ব্যবহার করা থেকে বিরত থাকুন, কারণ এর জন্য অতিরিক্ত প্রসেসিং প্রয়োজন হয় এবং এর ফলে টাইমআউট বা অন্যান্য সমস্যা হতে পারে। বড় আইটেম কালেকশনে সময়-ভিত্তিক সর্টিংয়ের জন্য, আপনি এর পরিবর্তে modifiedTime ব্যবহার করতে পারেন, কারণ এটি এই ধরনের কোয়েরি পরিচালনার জন্য অপ্টিমাইজ করা হয়েছে। উদাহরণস্বরূপ, ?orderBy=modifiedTime

আপনি যদি orderBy কোয়েরি প্যারামিটারটি বাদ দেন, তাহলে কোনো ডিফল্ট সর্ট অর্ডার থাকে না এবং আইটেমগুলো যথেচ্ছভাবে ফেরত আসে।