Implémenter la compatibilité avec les Drive partagés

Ce document explique comment implémenter la compatibilité avec les Drive partagés dans votre application à l'aide de l'API Google Drive.

Les Drive partagés suivent des modèles d'organisation, de partage et de propriété différents de ceux de Mon Drive. Si votre application doit créer et gérer des fichiers dans des Drive partagés, vous devez implémenter la compatibilité avec les Drive partagés dans votre application. La complexité de votre implémentation dépend des fonctionnalités de votre application.

Pour commencer, vous devez inclure le paramètre de requête supportsAllDrives=true dans vos requêtes lorsque votre application effectue les opérations suivantes :

API Drive v3

  • files.get
  • files.list
  • files.create
  • files.update
  • files.copy
  • files.delete
  • changes.list
  • changes.getStartPageToken
  • permissions.list
  • permissions.get
  • permissions.create
  • permissions.update
  • permissions.delete

API Drive v2

  • files.get
  • files.list
  • files.insert
  • files.update
  • files.patch
  • files.copy
  • files.trash
  • files.untrash
  • files.delete
  • files.touch
  • children.insert
  • parents.insert
  • changes.list
  • changes.getStartPageToken
  • changes.get
  • permissions.list
  • permissions.get
  • permissions.insert
  • permissions.update
  • permissions.patch
  • permissions.delete

Le paramètre supportsAllDrives=true informe Google Drive que votre application est conçue pour gérer les fichiers dans les Drive partagés.

Les applications qui lisent ou modifient des autorisations, suivent les modifications ou effectuent des recherches dans plusieurs corpus nécessitent des fonctionnalités supplémentaires pour les Drive partagés. Le reste de ce document met en évidence les modifications supplémentaires requises pour effectuer ces tâches.

Rechercher du contenu dans un Drive partagé

Utilisez la list méthode sur la files ressource pour rechercher des fichiers utilisateur dans des Drive partagés. Pour rechercher un Drive partagé, consultez Rechercher des Drive partagés.

La méthode list contient les paramètres de requête spécifiques aux Drive partagés suivants :

  • driveId : ID du Drive partagé dans lequel effectuer la recherche.

  • corpora : corps des éléments (fichiers ou documents) auxquels la requête s'applique. Les corps compatibles sont user, domain, drive et allDrives. Pour plus d'efficacité, préférez user ou drive à allDrives. Par défaut, le corpus est défini sur user.

  • includeItemsFromAllDrives: indique si les éléments de Mon Drive et des Drive partagés doivent être inclus dans les résultats. S'il n'est pas présent ou défini sur "false", les éléments des Drive partagés ne sont pas renvoyés.

  • supportsAllDrives: indique si l'application à l'origine de la requête est compatible avec Mon Drive et les Drive partagés. Si la valeur est "false", les éléments des Drive partagés ne sont pas inclus dans la réponse.

Les modes de requête suivants sont spécifiques aux Drive partagés :

includeItemsFromAllDrives corpora Description de la requête
true user Interroge les fichiers auxquels l'utilisateur a accédé, y compris les fichiers des Drive partagés et de Mon Drive.
true domain Interroge les fichiers partagés avec le domaine, y compris les fichiers des Drive partagés et de Mon Drive.
true drive Interroge tous les éléments du Drive partagé spécifié. Le driveId doit être spécifié dans la requête.
true allDrives Interroge les fichiers auxquels l'utilisateur a accédé et tous les Drive partagés dont il est membre. Notez que la réponse peut inclure incompleteSearch:true, ce qui indique que certains corpus n'ont pas été recherchés pour cette requête.

Les exemples de code suivants montrent comment rechercher des fichiers dans tous les Drive partagés ainsi que dans Mon 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'

Remplacez ACCESS_TOKEN par le jeton OAuth 2.0 de votre application.

Suivre les modifications dans un Drive partagé

Utilisez la méthode list sur la ressource changes pour suivre les modifications dans un Drive partagé. Pour en savoir plus, consultez Suivre les modifications pour les utilisateurs et les Drive partagés.

La méthode list contient les paramètres de requête spécifiques aux Drive partagés suivants :

  • driveId : Drive partagé à partir duquel les modifications sont renvoyées. Si cette option est spécifiée, les ID de modification font référence aux modifications apportées aux éléments du Drive partagé, ce qui fournit l'état actuel d'un fichier. Pour faire référence à une modification spécifique d'un Drive partagé, l'ID du Drive partagé et l'ID de modification doivent être utilisés comme identifiants.

  • includeItemsFromAllDrives: indique si les fichiers ou les modifications des Drive partagés doivent être inclus dans la liste des modifications.

  • supportsAllDrives: indique si l'application à l'origine de la requête est compatible avec les Drive partagés. Si la valeur est "false", les éléments des Drive partagés, y compris les Drive partagés et les fichiers qu'ils contiennent, ne sont pas renvoyés.

Les modes de requête suivants sont spécifiques aux Drive partagés :

includeItemsFromAllDrives driveId Description de la requête
true Non Les modifications reflètent les modifications apportées aux fichiers à l'intérieur ou à l'extérieur des Drive partagés auxquels l'utilisateur a accédé, ainsi que les modifications apportées aux Drive partagés dont l'utilisateur est membre.
true Oui Les modifications reflètent les modifications apportées au Drive partagé spécifié et aux éléments qu'il contient.

Les exemples de code suivants montrent comment suivre les modifications dans un Drive partagé :

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'

Remplacez les éléments suivants :

  • SHARED_DRIVE_ID : ID du Drive partagé.
  • ACCESS_TOKEN : jeton OAuth 2.0 de votre application.
  • START_PAGE_TOKEN : jeton de la page d'accueil du Drive partagé.

Remplacez SHARED_DRIVE_ID par l'ID du Drive partagé.

Activer la compatibilité avec les Drive partagés dans l'interface utilisateur de Drive

Pour accéder au contenu des Drive partagés à l'aide de l'interface utilisateur de Drive, assurez-vous d'avoir coché la case Compatibilité avec les Drive partagés dans l'onglet Intégration de l'interface utilisateur de Drive de l'API Google Drive dans la console Google Cloud. Pour en savoir plus, consultez Configurer une intégration de l'interface utilisateur de Drive.

Utiliser Google Picker avec les Drive partagés

Le Google Picker permet de sélectionner des éléments dans les Drive partagés. Pour en savoir plus sur l'activation de la compatibilité avec les Drive partagés et l'ajout de vues de Drive partagés dans le sélecteur, consultez l'API Google Picker.