Questo documento descrive come implementare il supporto dei Drive condivisi nella tua app utilizzando l'API Google Drive.
I Drive condivisi seguono modelli di organizzazione, condivisione e proprietà diversi da Il mio Drive. Se la tua app deve creare e gestire file sui Drive condivisi, devi implementare il supporto dei Drive condivisi nella tua app. La complessità dell'implementazione dipende dalla funzionalità della tua app.
Per iniziare, devi includere il parametro di query supportsAllDrives=true nelle richieste quando la tua app esegue le seguenti operazioni:
API Drive v3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
API Drive v2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
Il parametro supportsAllDrives=true informa Google Drive che la tua app è progettata per gestire i file sui Drive condivisi.
Le app che leggono o modificano le autorizzazioni, tengono traccia delle modifiche o eseguono ricerche in più corpora richiedono funzionalità aggiuntive per i Drive condivisi. Il resto di questo documento evidenzia le modifiche aggiuntive necessarie per eseguire queste attività.
Cercare contenuti su un Drive condiviso
Utilizza il list metodo nella files risorsa per trovare i file utente nei Drive condivisi. Per
cercare un Drive condiviso, vedi Cercare Drive
condivisi.
Il metodo list contiene i seguenti parametri di query specifici per i Drive condivisi:
driveId: ID del Drive condiviso in cui eseguire la ricerca.corpora: corpi di elementi (file o documenti) a cui si applica la query. I corpi supportati sonouser,domain,driveeallDrives. Per una maggiore efficienza, preferisciuserodriveaallDrives. Per impostazione predefinita, corpora è impostato suuser.includeItemsFromAllDrives: indica se gli elementi di Il mio Drive e dei Drive condivisi devono essere inclusi nei risultati. Se non è presente o è impostato su false, gli elementi dei Drive condivisi non vengono restituiti.supportsAllDrives: indica se l'applicazione richiedente supporta sia Il mio Drive sia i Drive condivisi. Se è impostato su false, gli elementi dei Drive condivisi non vengono inclusi nella risposta.
Le seguenti modalità di query sono specifiche per i Drive condivisi:
includeItemsFromAllDrives |
corpora |
Descrizione query |
|---|---|---|
true |
user |
Esegue query sui file a cui l'utente ha avuto accesso, inclusi i file dei Drive condivisi e di Il mio Drive. |
true |
domain |
Esegue query sui file condivisi con il dominio, inclusi i file dei Drive condivisi e di Il mio Drive. |
true |
drive |
Esegue query su tutti gli elementi del Drive condiviso specificato. L'elemento driveId deve essere specificato nella richiesta. |
true |
allDrives |
Esegue query sui file a cui l'utente ha avuto accesso e su tutti i Drive condivisi di cui è membro. Tieni presente che la risposta potrebbe includere incompleteSearch:true, il che indica che alcuni corpora non sono stati cercati per questa richiesta. |
I seguenti esempi di codice mostrano come cercare file su tutti i Drive condivisi e su Il mio Drive:
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'
Sostituisci ACCESS_TOKEN con il token OAuth 2.0 della tua app.
Tenere traccia delle modifiche su un Drive condiviso
Utilizza il list metodo nella risorsa changes per tenere traccia delle modifiche su un Drive condiviso. Per
saperne di più, vedi Tenere traccia delle modifiche per utenti e Drive
condivisi.
Il metodo list contiene i seguenti parametri di query specifici per i Drive condivisi:
driveId: il Drive condiviso da cui vengono restituite le modifiche. Se specificati, gli ID delle modifiche si riferiscono alle modifiche apportate agli elementi all'interno del Drive condiviso che fornisce lo stato attuale di un file. Per fare riferimento a una modifica specifica del Drive condiviso, è necessario utilizzare sia l'ID del Drive condiviso sia l'ID della modifica come identificatore.includeItemsFromAllDrives: indica se i file o le modifiche dei Drive condivisi devono essere inclusi nell'elenco delle modifiche.supportsAllDrives: indica se l'applicazione richiedente supporta i Drive condivisi. Se è impostato su false, gli elementi dei Drive condivisi, inclusi i Drive condivisi e i file all'interno di un Drive condiviso, non vengono restituiti.
Le seguenti modalità di query sono specifiche per i Drive condivisi:
includeItemsFromAllDrives |
driveId |
Descrizione query |
|---|---|---|
true |
No | Le modifiche riflettono le modifiche apportate ai file all'interno o all'esterno dei Drive condivisi a cui l'utente ha avuto accesso, nonché le modifiche ai Drive condivisi di cui l'utente è membro. |
true |
Sì | Le modifiche riflettono le modifiche apportate al Drive condiviso specificato e agli elementi al suo interno. |
I seguenti esempi di codice mostrano come tenere traccia delle modifiche su un Drive condiviso:
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'
Sostituisci quanto segue:
- SHARED_DRIVE_ID: l'ID del Drive condiviso.
- ACCESS_TOKEN: il token OAuth 2.0 della tua app.
- START_PAGE_TOKEN: il token della pagina iniziale per il Drive condiviso.
Sostituisci SHARED_DRIVE_ID con l'ID del Drive condiviso.
Attivare il supporto dei Drive condivisi nell'interfaccia utente di Drive
Per accedere ai contenuti dei Drive condivisi utilizzando l'interfaccia utente di Drive, assicurati di aver selezionato la casella Supporto dei Drive condivisi nella scheda Integrazione dell'interfaccia utente di Drive dell'API Google Drive nella console Google Cloud. Per saperne di più, vedi Configurare un'integrazione dell'interfaccia utente di Drive.
Utilizzare Google Picker con i Drive condivisi
Il Google Picker supporta la selezione di elementi nei Drive condivisi. Per informazioni dettagliate sull'attivazione del supporto dei Drive condivisi e sull'aggiunta di visualizzazioni dei Drive condivisi nel selettore, vedi l'API Google Picker.