Bu sayfada, belirli bir etiket veya alan değeri uygulanmış dosyaların nasıl aranacağı açıklanmaktadır.
Etiket alanı türleri
Google Drive etiket alanları kesin olarak türlenmiştir ve her tür farklı dizin oluşturma ve arama semantiğini destekler. 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 | SelectionOptions (max_entries > 1) | is null, is not null, in, not in |
Kullanıcı Listesi | UserOptions (max_entries > 1) | is null, is not null, in, not in |
Arama örnekleri
1. Etiket veya alan 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şen arama sorguları yazabilirsiniz. Aşağıdaki tabloda geçerli alan sorguları gösterilmektedir:
Sorgulamak istediğiniz öğe | 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' |
execution_date değerinin belirli bir tarihten önce olduğu dosyalar | labels/contract.execution_date < '2020-06-22' |
value_usd (tam sayı) 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. Çok değerli alanlara (ör. ListOptions.max_entries > 1) göre arama yapma
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ıtı labelInfo
ile birlikte göndermek istiyorsanız şunları da belirtmeniz gerekir:
includeLabels
kimliklerin virgülle ayrılmış listesi olarak.labelInfo
parametresininfields
içinde döndürülmesini istediğinizi belirtmek içinlabelInfo
kullanın.includeLabels
Başarılı olursa yanıt metni, 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
.