Bu kılavuzda, Google Drive API'nin dosya ve klasör aramak için çeşitli yöntemleri nasıl desteklediği açıklanmaktadır.
Bir Drive kullanıcısının dosya ve klasörlerinin tamamını veya bir kısmını döndürmek için list yöntemini files kaynağında kullanabilirsiniz. Ayrıca, bazı kaynak yöntemleri (ör. list
ve fileIdupdate yöntemleri) için gerekli olan get yöntemini de kullanabilirsiniz.
Alanlar parametresini kullanma
Yanıtla döndürülecek alanları belirtmek istiyorsanız fields system
parametresini
files kaynağının herhangi bir yöntemiyle ayarlayabilirsiniz. fields parametresini atlarsanız sunucu, yönteme özgü varsayılan bir alan kümesi döndürür. Örneğin, list yöntemi her dosya için yalnızca kind, id, name, mimeType ve resourceKey alanlarını döndürür. Farklı alanları döndürmek için Belirli alanları döndürme başlıklı makaleye bakın.
Kimliğe göre dosya alma
Bir dosyayı almak için fileId yol parametresiyle files kaynağında get yöntemini kullanın.
Dosya kimliğini bilmiyorsanız list yöntemini kullanarak tüm dosyaları listeleyebilirsiniz.
Yöntem, dosyayı files kaynağının bir örneği olarak döndürür. alt=media parametresini sağlarsanız yanıt, dosya içeriklerini yanıt gövdesinde içerir. Blob dosyası indirmek için Blob dosyası içeriğini indirme başlıklı makaleyi inceleyin.
Bilinen kötü amaçlı yazılımları veya diğer kötüye kullanım amaçlı dosyaları indirmenin riskini kabul etmek için acknowledgeAbuse sorgu parametresini true olarak ayarlayın. Bu alan yalnızca alt=media parametresi ayarlandığında ve kullanıcının dosya sahibi ya da dosyanın bulunduğu ortak Drive'ın düzenleyicisi olması durumunda geçerlidir.
Drive'ım bölümündeki tüm dosya ve klasörleri listeleme
Mevcut kullanıcının Drive'ım bölümündeki tüm dosya ve klasörleri döndürmek için list yöntemini parametre olmadan kullanın.
Aşağıdaki curl komutu, tüm dosyaların nasıl listeleneceğini gösterir:
curl -X GET \
'https://www.googleapis.com/drive/v3/files' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
ACCESS_TOKEN yerine yetkili bir OAuth 2.0 erişim jetonu yerleştirin.
Drive'ım bölümünde belirli dosya ve klasörleri arama
Mevcut kullanıcının Drive'ım klasöründe belirli bir dosya veya klasör grubunu aramak için q sorgu dizesi alanını list yöntemiyle birlikte kullanarak döndürülecek dosyaları filtreleyin. Bu işlem için bir veya daha fazla arama terimini birleştirin.
Sorgu dizesi söz dizimi aşağıdaki üç bölümü içerir:
query_term operator values
Burada:
query_term, sorgu terimi veya aranacak alandır.operator, sorgu terimi için koşulu belirtir.values, arama sonuçlarınızı filtrelemek için kullanmak istediğiniz belirli değerlerdir.
Örneğin, aşağıdaki sorgu dizesi, MIME türü ayarlanarak aramanın yalnızca klasörleri döndürmesi için filtreler:
mimeType = 'application/vnd.google-apps.folder'
Tüm dosya sorgusu terimlerini görüntülemek için Dosyaya özgü sorgu terimleri başlıklı makaleyi inceleyin.
Sorgu oluşturmak için kullanabileceğiniz tüm sorgu operatörlerini görüntülemek üzere Sorgu operatörleri başlıklı makaleyi inceleyin.
Sorgu dizesi örnekleri
Aşağıdaki tabloda, bazı temel sorgu dizeleriyle ilgili örnekler verilmiştir. Gerçek kod, aramanız için kullandığınız istemci kitaplığına bağlı olarak değişir.
Sorgunun doğru şekilde çalışması için dosya adlarınızdaki özel karakterleri de kod dışına almanız gerekir. Örneğin, bir dosya adında hem kesme işareti (') hem de ters eğik çizgi ("\") karakteri varsa bunları kod dışı bırakmak için ters eğik çizgi kullanın: name
contains 'quinn\'s paper\\essay'.
| Hangi sorgular gönderilebilir? | Örnek |
|---|---|
Dize eşleşme operatörü (contains) |
|
| "Merhaba" kelimesini içeren dosyalar | fullText contains 'hello' |
| "hello world" kelime öbeğini tam olarak içeren dosyalar | fullText contains '"hello world"' |
| "\" karakterini içeren bir sorgu içeren dosyalar (örneğin, "\authors") | fullText contains '\\authors' |
| Adında "bütçe" geçen dosyalar | name contains 'budget' |
Eşitlik ve eşitsizlik operatörleri (=, !=) |
|
| Adı "hello" olan dosyalar | name = 'hello' |
| Klasör olan dosyalar | mimeType = 'application/vnd.google-apps.folder' |
| Klasör olmayan dosyalar | mimeType != 'application/vnd.google-apps.folder' |
| Yıldız eklenen dosyalar | starred = true |
| Çöp kutusundaki dosyalar | trashed = true |
| Çöp kutusunda olmayan dosyalar | trashed = false |
| Belirli bir dosya kimliğini işaret eden kısayollar | shortcutDetails.targetId = '1987654321' |
| Hiç kimseyle veya alanla paylaşılmamış dosyalar (gizli veya belirli kullanıcılar ya da gruplarla paylaşılmış) | visibility = 'limited' |
| Bağlantıya sahip olan herkesin erişebildiği dosyalar | visibility = 'anyoneWithLink' |
| Web'de herkese açık olarak bulunabilen dosyalar | visibility = 'anyoneCanFind' |
Karşılaştırma operatörleri (>, >=, <, <=) |
|
| Belirli bir tarihten sonra değiştirilen dosyalar (varsayılan saat dilimi UTC'dir) | modifiedTime > '2012-06-04T12:00:00' |
| 1 Ocak 2023'ten sonra oluşturulan dosyalar | createdTime > '2023-01-01T00:00:00' |
| 1 Ocak 2023'ten önce değiştirilen dosyalar | modifiedTime < '2023-01-01T00:00:00' |
Koleksiyon üyeliği operatörü (in) |
|
Bir koleksiyondaki dosyalar (örneğin, parents koleksiyonundaki klasör kimliği) |
'1234567' in parents |
| Uygulama verileri klasöründeki dosyalar | 'appDataFolder' in parents |
| "test@example.org" kullanıcısının sahibi olduğu dosyalar | 'test@example.org' in owners |
| "test@example.org" kullanıcısının yazma iznine sahip olduğu dosyalar | 'test@example.org' in writers |
| "group@example.org" grubu üyelerinin yazma iznine sahip olduğu dosyalar | 'group@example.org' in writers |
| "test@example.org" kullanıcısının okuma izni olan dosyalar | 'test@example.org' in readers |
Koleksiyon eşleştirme operatörü (has) |
|
| Tüm uygulamaların görebileceği özel dosya özelliği içeren dosyalar | properties has { key='mass' and value='1.3kg' } |
| İstekte bulunan uygulamaya özel özel dosya özelliği içeren dosyalar | appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' } |
| "department" anahtarına sahip özel dosya özelliği olan dosyalar (değerden bağımsız olarak) | properties has { key='department' } |
Mantıksal operatörler (and, or, not) |
|
| Adında "merhaba" ve "güle güle" kelimeleri geçen dosyalar | name contains 'hello' and name contains 'goodbye' |
| Adında "hello" kelimesi bulunmayan dosyalar | not name contains 'hello' |
| "Önemli" metnini içeren ve çöp kutusunda bulunan dosyalar | fullText contains 'important' and trashed = true |
| "Merhaba" kelimesini içermeyen dosyalar | not fullText contains 'hello' |
| Belirli bir tarihten sonra değiştirilen resim veya video dosyaları | modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/') |
| Adında "hello" geçen ve yetkili kullanıcıyla paylaşılan dosyalar | sharedWithMe and name contains 'hello' |
| Klasör veya kısayol olan dosyalar | mimeType = 'application/vnd.google-apps.folder' or mimeType = 'application/vnd.google-apps.shortcut' |
| Çöp kutusunda olmayan ve "Proje Planı" adlı dosyalar | name = 'Project Plan' and trashed = false |
| Belirli bir klasördeki, çöp kutusunda olmayan dosyalar | '1234567' in parents and trashed = false |
Arama sonuçlarını istemci kitaplığıyla filtreleme
Aşağıdaki kod örneğinde, arama sonuçlarını JPEG dosyalarının adlarına ve kimliklerine göre filtrelemek için istemci kitaplığının nasıl kullanılacağı gösterilmektedir. Bu örnekte, sonuçları image/jpeg türündeki dosyalarla sınırlamak için mimeType sorgu terimi kullanılmaktadır. Ayrıca, aramayı Drive alanıyla daha da daraltmak için spaces değerini drive olarak ayarlar. nextPageToken null değerini döndürdüğünde başka sonuç yoktur.
Java
Python
Node.js
PHP
Ortak klasördeki dosyaları listeleme
Herkese açık olarak paylaşılan bir klasördeki (erişimin "Bağlantıya sahip olan herkes" veya "Web'de herkese açık" olarak ayarlandığı) dosyaları aramak ya da listelemek için parents koleksiyonunda klasörün kimliğine göre filtreleme yapmak üzere files kaynağında q sorgu parametresi ayarlanmış list yöntemini kullanın:
'FOLDER_ID' in parents and trashed = false
Herkese açık bir klasördeki dosyaları listelerken, OAuth 2.0 kullanıcı kimlik bilgileri yerine API anahtarı kullanarak isteklerin kimliğini doğrulayabilirsiniz. Klasör bir ortak drive'da bulunuyorsa istekte supportsAllDrives=true ve includeItemsFromAllDrives=true ayarlarını da yapmanız gerekir.
Aşağıdaki kod örneklerinde, herkese açık bir klasördeki dosyaların nasıl listeleneceği gösterilmektedir:
Node.js
/**
* List files in a public folder using an API key.
* @param {string} folderId The ID of the public folder.
* @param {string} apiKey Your Google Cloud API key.
* @return {Promise<Array>} The list of files.
*/
async function listPublicFolder(folderId, apiKey) {
const {google} = require('googleapis');
const service = google.drive({version: 'v3', auth: apiKey});
try {
const response = await service.files.list({
q: `'${folderId}' in parents and trashed = false`,
fields: 'nextPageToken, files(id, name, mimeType)',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
});
const files = response.data.files;
console.log('Files:');
for (const file of files) {
console.log(`${file.name} (${file.id})`);
}
return files;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl -G \
'https://www.googleapis.com/drive/v3/files' \
--data-urlencode "q='FOLDER_ID' in parents and trashed = false" \
--data-urlencode 'supportsAllDrives=true' \
--data-urlencode 'includeItemsFromAllDrives=true' \
--data-urlencode 'fields=nextPageToken,files(id,name,mimeType)' \
--data-urlencode 'key=API_KEY' \
-H 'Accept: application/json'
Aşağıdakini değiştirin:
- FOLDER_ID: Ortak klasörün kimliği.
- API_KEY: Projenizin API anahtarı.
Özel özelliklere sahip dosyaları arama
Özel dosya özelliği içeren dosyaları aramak için anahtar ve değer içeren properties veya appProperties arama sorgusu terimini kullanın. Örneğin, additionalID adlı istekte bulunan uygulamaya özel olan ve değeri 8e8aceg2af2ge72e78 olan bir özel dosya özelliğini aramak için:
appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
Daha fazla bilgi için Özel dosya özellikleri ekleme başlıklı makaleyi inceleyin.
Dosyaları etikete veya alan değerine göre arama
Belirli etiketlere sahip dosyaları aramak için labels arama sorgusu terimini belirli bir etiket kimliğiyle birlikte kullanın.
Belirli bir etiketin uygulandığı dosyaları aramak için:
'labels/LABEL_ID' in labels
Belirli bir etiketin uygulanmadığı dosyaları aramak için:
not 'labels/LABEL_ID' in labels
Dosyaları belirli bir etiket alanı değerine göre aramak için:
labels/LABEL_ID.FIELD_ID = 'VALUE'
Başarılı olursa yanıt gövdesi, sorguyla eşleşen tüm dosya örneklerini içerir. Daha fazla bilgi için Belirli bir etikete veya alan değerine sahip dosyaları arama başlıklı makaleyi inceleyin.
Derlemelerde arama yapma
Varsayılan olarak, list yöntemi kullanıldığında user öğe koleksiyonu corpora sorgu parametresinde ayarlanır. Diğer öğe koleksiyonlarını (ör. domain ile paylaşılanlar) aramak için corpora parametresini açıkça ayarlamanız gerekir.
Tek bir sorguda birden fazla derlemeyi arayabilirsiniz. Ancak birleştirilmiş derlemeler çok büyükse API eksik sonuçlar döndürebilir. Yanıt gövdesindeki
incompleteSearch
alanını kontrol edin. true ise bazı belgeler atlanmıştır. Bu sorunu çözmek için corpora'ı daraltarak user veya drive'ı kullanın.
list yönteminde orderBy sorgu parametresini kullanırken büyük öğe koleksiyonlarındaki sorgular için createdTime anahtarını kullanmaktan kaçının. Bu anahtar ek işlem gerektirir ve zaman aşımlarına veya başka sorunlara neden olabilir. Büyük öğe koleksiyonlarında zamana göre sıralama için bu sorguları işlemek üzere optimize edildiğinden modifiedTime kullanabilirsiniz.
Örneğin, orderBy öğesini modifiedTime (veya modifiedTime desc) olarak ayarlayın.
orderBy sorgu parametresini atlarsanız varsayılan sıralama düzeni olmaz ve öğeler rastgele döndürülür.
İlgili konular
- Ortak Drive'ları arama
- Arama sorgusu terimleri ve operatörleri
- Google Workspace ve Google Drive'da desteklenen MIME türleri
- Roller ve izinler
- Belirli bir etikete veya alan değerine sahip dosyaları arama