Belirli bir etiket veya alan değeri olan dosyaları arayın

Bu sayfada, belirli bir etiket veya alan değeri uygulanmış dosyaları nasıl arayacağınız açıklanmaktadır.

Etiket alanı türleri

Google Drive etiket alanları, her tür farklı dizine ekleme ve arama semantiklerini destekleyen güçlü bir şekilde yazılmıştır. Aşağıdaki tabloda kullanılabilen veri türleri gösterilmektedir.

Tür Etiket türü seçenekleri Desteklenen arama operatörleri
Metin TextOptions is null, is not null, =, contains, starts with
Uzun Metin LongTextOptions is null, is not null, contains
Tamsayı IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Tarih DateOptions is null, is not null, =, !=, <, >, <=, >=
Seçim SelectionOptions is null, is not null, =, !=
Kullanıcı UserOptions is null, is not null, =, !=
Seçim Listesi SelectionOptions (max_entries > 1 ile) is null, is not null, in, not in
Kullanıcı Listesi UserOptions (max_entries > 1 ile) is null, is not null, in, not in

1. Etiket veya alanın varlığına göre arama yapma

Belirli bir etiketin uygulandığı (veya uygulanmadığı) öğeleri arayabilirsiniz:

  • 'labels/contract' in labels
  • not 'labels/contract' in labels

Belirli bir alanın ayarlandığı (veya ayarlanmadığı) öğeleri de arayabilirsiniz:

  • labels/contract.comment IS NOT NULL
  • labels/contract.comment IS NULL

2. Tek değerli alanlara göre arama yapma

Beklenen alan değerleriyle eşleşecek arama sorguları yazabilirsiniz. Aşağıdaki tabloda geçerli alan sorguları gösterilmektedir:

Sorgulamak istediğiniz veri Sorgu dizesi
Yorumunun "merhaba" olarak ayarlandığı öğeler labels/contract.comment = 'hello'
Yorumunun "merhaba" ile başladığı dosyalar labels/contract.comment STARTS WITH 'hello'
Durumun yürütüldüğü dosyalar labels/contract.status = 'executed'
Durum özelliğinin yürütülmediği dosyalar labels/contract.status != 'executed'
execution_date değerinin belirli bir tarihten önce olduğu dosyalar labels/contract.execution_date < '2020-06-22'
value_usd (tam sayı) özelliğinin belirli bir değerden düşük olduğu dosyalar labels/contract.value_usd < 2000
client_contact özelliğinin belirli bir e-posta adresine ayarlandığı dosyalar labels/contract.client_contact = 'alex@altostrat.com'

3. Çok değerli alanlara göre arama (ör. ListOptions.max_entries > 1)

Birden fazla değeri destekleyen alanlar yalnızca IN operatörü kullanılarak sorgulanabilir:

  • 'EMAIL_ADDRESS' IN labels/project.project_leads
  • NOT 'EMAIL_ADDRESS' IN labels/project.project_leads

Örnek

Aşağıdaki kod örneğinde, bir Drive dosya kaynağındaki belirli bir etikete veya alan değerine sahip tüm dosyaları listelemek için bir veya daha fazla labelId değerinin nasıl kullanılacağı gösterilmektedir. Ayrıca files.list yöntemini de kullanır. İstek metni boş olmalıdır.

Yanıta labelInfo eklemek istiyorsanız aşağıdakileri de belirtmeniz gerekir:

  • includeLabels virgülle ayrılmış bir kimlik listesi olarak girin.

  • labelInfo parametresinde labelInfo değerinin includeLabels içinde döndürülmesini belirtmek için fields parametresinde labelInfo değerini kullanın.

Başarılı olursa yanıt gövdesi dosya listesini içerir.

Java

List<File> fileList = driveService.files().list().setIncludeLabels("LABEL_1_ID,LABEL_2_ID").setFields("items(labelInfo, id)").setQ("'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels").execute().getItems();

Python

file_list = drive_service.files().list(includeLabels="LABEL_1_ID,LABEL_2_ID", q="'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels", fields="items(labelInfo, id)").execute();

Node.js

/**
* Search for Drive files with specific labels
* @return{obj} file list with labelInfo
**/
async function searchForFileWithLabels() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  try {
    const fileList = await service.files.list({
      includeLabels: 'LABEL_1_ID,LABEL_2_ID',
      q: '\'labels/LABEL_1_ID\' in labels and \'labels/LABEL_2_ID\' in labels',
      fields:'files(labelInfo, id)',
    });
    return file;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }

Aşağıdakini değiştirin:

  • LABEL_1_ID: İade edilecek etiketin ilk labelId.
  • LABEL_2_ID: İade edilecek etiketin ikinci labelId.