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

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

Etiket alanı türleri

Google Drive etiket alanları, her tür, farklı dizine ekleme ve arama anlamlarını destekleyecek şekilde ayrıntılı bir şekilde yazılır. Aşağıdaki tabloda kullanılabilir 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 Seçim Seçenekleri (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. Bir etiketin 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 yapın

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

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

3. Birden çok değerli alanlara sahip alanlara göre arama yapın (ör. ListOptions.max_entries > 1)

Birden çok 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ğından belirli bir etikete veya alan değerine sahip tüm dosyaları listelemek için bir veya daha fazla labelId öğesinin nasıl kullanılacağı gösterilmektedir. Ayrıca files.list yöntemini de kullanır. İstek gövdesi boş olmalıdır.

Yanıta labelInfo kelimesini eklemek isterseniz şunu da belirtmeniz gerekir:

  • Kimliklerin virgülle ayrılmış listesi olarak includeLabels kullanılabilir.

  • labelInfo öğesinin includeLabels içinde döndürülmesini istediğinizi belirtmek için fields parametresinde labelInfo.

Başarılı olursa Yanıt gövdesi, dosyaların 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: Etiketin döndürülecek ilk labelId değeri.
  • LABEL_2_ID: Etiketin döndürülecek ikinci labelId'ı.