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 |
Arama örnekleri
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
parametresindelabelInfo
değerininincludeLabels
içinde döndürülmesini belirtmek içinfields
parametresindelabelInfo
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
.