Bu belgede, Google Drive API'yi kullanarak uygulamanızda ortak Drive desteğini nasıl uygulayacağınız açıklanmaktadır.
Ortak Drive'lar, Drive'ım'dan farklı kuruluş, paylaşım ve sahiplik modellerini kullanır. Uygulamanız ortak Drive'larda dosya oluşturup yönetecekse uygulamanızda ortak Drive desteğini uygulamanız gerekir. Uygulamanızın işlevselliğine bağlı olarak uygulamanızın karmaşıklığı değişir.
Başlamak için uygulamanız aşağıdaki işlemleri gerçekleştirirken isteklerinize supportsAllDrives=true sorgu parametresini eklemeniz gerekir:
Drive API v3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
Drive API v2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
supportsAllDrives=true parametresi, Google Drive'a uygulamanızın ortak Drive'lardaki dosyaları işlemek üzere tasarlandığını bildirir.
İzinleri okuyan veya değiştiren, değişiklikleri izleyen ya da birden fazla metin derlemesi arasında arama yapan uygulamalar için ek ortak Drive özellikleri gerekir. Bu belgenin geri kalanında, bu görevleri gerçekleştirmek için gereken ek değişiklikler vurgulanmaktadır.
Ortak Drive'daki içerikleri arama
Ortak Drive'lardaki kullanıcı dosyalarını bulmak için files kaynağında list yöntemini kullanın. Ortak Drive'ı arama hakkında bilgi edinmek için Ortak Drive'ları arama başlıklı makaleyi inceleyin.
list yöntemi, ortak drive'a özgü şu sorgu parametrelerini içerir:
driveId: Aranacak ortak Drive'ın kimliği.corpora: Sorgunun uygulandığı öğelerin (dosyalar veya dokümanlar) gövdeleri. Desteklenen gövdeleruser,domain,driveveallDrives'dir. Verimlilik içinallDrivesyerineuserveyadrive'ı tercih edin. Varsayılan olarak, derlemleruserolarak ayarlanır.includeItemsFromAllDrives: Hem Drive'ım hem de ortak drive öğelerinin sonuçlara dahil edilip edilmeyeceğini belirtir. Bu özellik yoksa veya yanlış olarak ayarlanmışsa ortak Drive öğeleri döndürülmez.supportsAllDrives: İstekte bulunan uygulamanın hem Drive'ım hem de ortak drive'ı destekleyip desteklemediği. Yanlışsa ortak Drive öğeleri yanıta dahil edilmez.
Aşağıdaki sorgu modları, ortak drive'lara özeldir:
includeItemsFromAllDrives |
corpora |
Sorgu açıklaması |
|---|---|---|
true |
user |
Kullanıcının eriştiği dosyaları (hem ortak Drive hem de Drive'ım dosyaları dahil) sorgular. |
true |
domain |
Ortak Drive ve Drive'ım dosyaları da dahil olmak üzere alanla paylaşılan dosyaları sorgular. |
true |
drive |
Belirtilen ortak drive'daki tüm öğeleri sorgular. İstek içinde driveId belirtilmelidir. |
true |
allDrives |
Kullanıcının eriştiği dosyaları ve üyesi olduğu tüm ortak Drive'ları sorgular. Yanıtın incompleteSearch:true içerdiğini unutmayın. Bu, bazı derlemlerin bu istek için aranmadığını gösterir. |
Aşağıdaki kod örneklerinde, tüm ortak Drive'lardaki ve Drive'ım bölümündeki dosyaların nasıl aranacağı gösterilmektedir:
Python
files = []
page_token = None
while True:
response = drive_service.files().list(
q="mimeType='application/vnd.google-apps.folder'",
spaces='drive',
corpora='allDrives',
supportsAllDrives=True,
includeItemsFromAllDrives=True,
fields='nextPageToken, files(id, name)',
pageToken=page_token
).execute()
files.extend(response.get('files', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
Node.js
let files = [];
let pageToken = null;
do {
const response = await drive_service.files.list({
q: "mimeType='application/vnd.google-apps.folder'",
spaces: 'drive',
corpora: 'allDrives',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
fields: 'nextPageToken, files(id, name)',
pageToken: pageToken
});
files = files.concat(response.data.files);
pageToken = response.data.nextPageToken;
} while (pageToken);
Java
List<File> files = new ArrayList<>();
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ("mimeType='application/vnd.google-apps.folder'")
.setSpaces("drive")
.setCorpora("allDrives")
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
files.addAll(result.getFiles());
pageToken = result.getNextPageToken();
} while (pageToken != null);
curl
curl -X GET \
'https://www.googleapis.com/drive/v3/files?corpora=allDrives&includeItemsFromAllDrives=true&supportsAllDrives=true&fields=nextPageToken%2Cfiles(id%2Cname)' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
ACCESS_TOKEN kısmını uygulamanızın OAuth 2.0 jetonuyla değiştirin.
Bir ortak drive'daki değişiklikleri izleme
Ortak Drive'daki değişiklikleri izlemek için changes kaynağında list yöntemini kullanın. Daha fazla bilgi için Kullanıcılar ve paylaşılan sürücüler için değişiklikleri izleme başlıklı makaleyi inceleyin.
list yöntemi, ortak drive'a özgü şu sorgu parametrelerini içerir:
driveId: Değişikliklerin döndürüldüğü ortak drive. Belirtilmişse, değişiklik kimlikleri, bir dosyanın mevcut durumunu sağlayan ortak drive'daki öğelerde yapılan değişiklikleri ifade eder. Belirli bir ortak Drive değişikliğine başvurmak için hem ortak Drive kimliği hem de değişiklik kimliği tanımlayıcı olarak kullanılmalıdır.includeItemsFromAllDrives: Ortak Drive dosyalarının veya değişikliklerin değişiklik listesine dahil edilip edilmeyeceği.supportsAllDrives: İsteği gönderen uygulamanın ortak drive'ları destekleyip desteklemediği. Yanlışsa hem ortak drive'lar hem de ortak drive'daki dosyalar dahil olmak üzere ortak drive öğeleri döndürülmez.
Aşağıdaki sorgu modları, ortak drive'lara özeldir:
includeItemsFromAllDrives |
driveId |
Sorgu açıklaması |
|---|---|---|
true |
Hayır | Değişiklikler, kullanıcının eriştiği ortak Drive'ların içindeki veya dışındaki dosyalarda yapılan değişikliklerin yanı sıra kullanıcının üyesi olduğu ortak Drive'larda yapılan değişiklikleri yansıtır. |
true |
Evet | Değişiklikler, belirtilen ortak drive'da ve bu ortak drive'daki öğelerde yapılan değişiklikleri yansıtır. |
Aşağıdaki kod örneklerinde, ortak Drive'daki değişikliklerin nasıl izleneceği gösterilmektedir:
Python
# 1. Get the start page token for the shared drive.
response = drive_service.changes().getStartPageToken(
supportsAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
start_page_token = response.get('startPageToken')
# 2. List changes starting from the page token.
response = drive_service.changes().list(
pageToken=start_page_token,
supportsAllDrives=True,
includeItemsFromAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
changes = response.get('changes', [])
Node.js
// 1. Get the start page token for the shared drive.
const tokenResponse = await drive_service.changes.getStartPageToken({
supportsAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const startPageToken = tokenResponse.data.startPageToken;
// 2. List changes starting from the page token.
const response = await drive_service.changes.list({
pageToken: startPageToken,
supportsAllDrives: true,
includeItemsFromAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const changes = response.data.changes;
Java
// 1. Get the start page token for the shared drive.
StartPageToken tokenResult = driveService.changes().getStartPageToken()
.setSupportsAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
String startPageToken = tokenResult.getStartPageToken();
// 2. List changes starting from the page token.
ChangeList changesResult = driveService.changes().list(startPageToken)
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
List<Change> changes = changesResult.getChanges();
curl
# 1. Get the start page token for the shared drive.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes/startPageToken?supportsAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
# 2. List changes starting from the page token.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes?pageToken=START_PAGE_TOKEN&supportsAllDrives=true&includeItemsFromAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
Aşağıdakini değiştirin:
- SHARED_DRIVE_ID: Ortak Drive'ın kimliği.
- ACCESS_TOKEN: Uygulamanızın OAuth 2.0 jetonu.
- START_PAGE_TOKEN: Paylaşılan sürücünün başlangıç sayfası jetonu.
SHARED_DRIVE_ID yerine ortak Drive'ın kimliğini yazın.
Drive kullanıcı arayüzünde ortak Drive desteğini etkinleştirme
Drive kullanıcı arayüzünü kullanarak ortak Drive içeriğine erişmek için Google Cloud Console'daki Google Drive API'sinin Drive kullanıcı arayüzü entegrasyonu sekmesinde Ortak Drive desteği kutusunu işaretlediğinizden emin olun. Daha fazla bilgi için Drive kullanıcı arayüzü entegrasyonu yapılandırma başlıklı makaleyi inceleyin.
Google Seçici'yi ortak drive'larla kullanma
Google Seçici, ortak drive'lardaki öğelerin seçilmesini destekler. Ortak Drive desteğini etkinleştirme ve seçiciye ortak Drive görünümleri ekleme hakkında ayrıntılı bilgi için Google Picker API başlıklı makaleyi inceleyin.