L'API Google Drive propose plusieurs méthodes pour empêcher la modification des fichiers, y compris la restriction du contenu des fichiers et l'interdiction de télécharger, d'imprimer ou de copier des fichiers.
Rendre des fichiers en lecture seule avec les restrictions de contenu Drive
Vous pouvez ajouter une restriction de contenu à un fichier Google Drive pour empêcher les utilisateurs d'effectuer les actions suivantes:
- Modifier le titre
- Modifier le contenu
- Importer une révision
- Ajouter ou modifier des commentaires
L'application de restrictions de contenu est un mécanisme qui permet de rendre le contenu d'un élément Drive en lecture seule sans modifier ses autorisations d'accès. Il ne s'agit donc pas d'une restriction d'accès. Bien que les utilisateurs ne puissent pas modifier le contenu du fichier, d'autres opérations sont toujours autorisées en fonction du niveau d'accès (par exemple, un utilisateur autorisé à modifier un élément peut toujours déplacer un élément ou modifier ses paramètres de partage).
Pour ajouter ou supprimer une restriction de contenu sur un fichier dans Drive, un utilisateur doit disposer des autorisations associées. Pour un fichier ou un dossier dans Mon Drive ou un Drive partagé avec capabilities.canModifyEditorContentRestriction
, vous devez avoir role=writer
attribué. Pour un fichier ou un dossier dans Mon Drive ou un Drive partagé avec une restriction de contenu ownerRestricted
, vous devez en être le propriétaire ou disposer de role=organizer
. Pour afficher un élément soumis à une restriction de contenu, les utilisateurs doivent disposer d'role=reader
ou d'une version ultérieure. Pour obtenir la liste complète des rôles, consultez la section Rôles et autorisations. Pour modifier les autorisations d'un fichier, consultez la section Modifier les autorisations.
Vous pouvez utiliser le champ booléen contentRestrictions.readOnly
de la ressource files
pour définir une restriction de contenu. Notez que définir une restriction de contenu sur un élément écrase celle existante.
Scénarios de restrictions de contenu
Une restriction de contenu appliquée à un élément Drive indique aux utilisateurs qu'ils ne doivent pas modifier le contenu. Cela peut être dû à l'une des raisons suivantes:
- Mettre en pause le travail sur un document collaboratif pendant une période d'examen ou d'audit
- Définition d'un élément sur un état finalisé (par exemple, approuvé).
- Empêcher les changements au cours d'une réunion sensible.
- Interdire les modifications externes pour les workflows gérés par des systèmes automatisés
- Limiter les modifications apportées par Google Apps Script et les modules complémentaires Google Workspace
- Éviter les modifications accidentelles apportées à un document
Notez toutefois que, bien que les restrictions de contenu puissent aider à les gérer, elles ne sont pas destinées à empêcher les utilisateurs disposant d'autorisations suffisantes de continuer à travailler sur un élément. De plus, il n'est pas possible de créer un enregistrement immuable. Les restrictions de contenu Drive sont modifiables. Par conséquent, une restriction de contenu appliquée à un élément ne garantit pas que cet élément ne changera jamais.
Gérer les fichiers soumis à des restrictions de contenu
Google Docs, Google Sheets et Google Slides, ainsi que tous les autres fichiers, peuvent contenir des restrictions de contenu.
Une restriction de contenu appliquée à un élément empêche de modifier son titre et son contenu, y compris les éléments suivants:
- Commentaires et suggestions (sur Docs, Sheets, Slides et fichiers binaires)
- Révisions d'un fichier binaire
- Texte et mise en forme dans Docs
- Texte ou formules dans Sheets, mise en page Sheets et instances dans Sheets
- Tout le contenu dans Slides, ainsi que l'ordre et le numéro des diapositives
Certains types de fichiers ne peuvent pas contenir de restriction de contenu. Voici quelques exemples :
- Google Forms
- Google Sites
- Google Drawings
- Raccourcis et raccourcis tiers. Pour en savoir plus, consultez les pages Créer un fichier de raccourci vers le contenu stocké par votre application et Créer un raccourci vers un fichier Drive.
Ajouter une restriction de contenu
Pour ajouter une restriction de contenu de fichier, utilisez la méthode files.update
avec le champ contentRestrictions.readOnly
défini sur true
. Ajoutez un reason
facultatif pour indiquer pourquoi vous ajoutez la restriction, par exemple "Contrat finalisé". L'exemple de code suivant montre comment ajouter une restriction de contenu:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
// 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});
const contentRestriction = {
'readOnly': True,
'reason': 'Finalized contract.',
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Remplacez FILE_ID par le fileId
du fichier que vous souhaitez modifier.
Lorsque vous exécutez l'exemple de code, le contenu du fichier est soumis à des restrictions et un symbole de cadenas (interface utilisateur (UI) de Google Drive. Le fichier est maintenant en lecture seule.
) s'affiche à côté du nom du fichier dans l'Supprimer une restriction de contenu
Pour supprimer une restriction de contenu de fichier, utilisez la méthode files.update
avec le champ contentRestrictions.readOnly
défini sur false
. L'exemple de code suivant montre comment supprimer une restriction de contenu:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(false));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': False}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
// 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});
const contentRestriction = {
'readOnly': False,
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Remplacez FILE_ID par le fileId
du fichier que vous souhaitez modifier.
Lorsque vous exécutez l'exemple de code, le fichier n'est plus soumis à restriction de contenu.
Vous pouvez également utiliser l'interface utilisateur de Drive pour supprimer une restriction de contenu et autoriser la modification du contenu (à condition de disposer des autorisations appropriées). Pour ce faire, vous disposez de deux options:
Dans Drive, effectuez un clic droit sur le fichier soumis à une restriction de contenu, puis cliquez sur Déverrouiller
.Ouvrez le fichier soumis à une restriction de contenu, puis cliquez sur (Mode verrouillé) > Déverrouiller le fichier.
Vérifier si votre contenu est soumis à des restrictions
Pour vérifier si une restriction de contenu s'applique, utilisez la méthode files.get
avec le champ contentRestrictions
renvoyé. L'exemple de code suivant montre comment vérifier l'état d'une restriction de contenu:
Java
File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();
Python
response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();
Node.js
/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
// 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 response = await service.files.get({
fileId: 'FILE_ID',
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Remplacez FILE_ID par le fileId
du fichier que vous souhaitez vérifier.
Lorsque vous exécutez l'exemple de code, la méthode renvoie une ressource ContentRestriction
, le cas échéant.
Ajouter une restriction de contenu que seul le propriétaire du fichier peut modifier
Pour ajouter une restriction de contenu de fichier afin que seuls les propriétaires de fichiers puissent activer/désactiver le mécanisme, utilisez la méthode files.update
avec le champ booléen contentRestrictions.ownerRestricted
défini sur true
. L'exemple de code suivant montre comment ajouter une restriction de contenu pour les propriétaires de fichiers uniquement:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
// 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});
const contentRestriction = {
'readOnly': True,
'ownerRestricted': True,
'reason': 'Finalized contract.',
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Remplacez FILE_ID par le fileId
du fichier que vous souhaitez modifier.
Lorsque vous exécutez l'exemple de code, le contenu du fichier est limité et seuls les propriétaires du fichier peuvent le supprimer. Si vous êtes le propriétaire du fichier, un symbole de verrouillage actif ( interface utilisateur (UI) de Drive. Si vous n'êtes pas le propriétaire, le symbole en forme de serrure est grisé.
) s'affiche à côté du nom du fichier dans l'Pour supprimer l'option ownerRestricted
, utilisez la méthode files.update
avec le champ contentRestrictions.ownerRestricted
défini sur false
.
Fonctionnalités de restriction de contenu
Une ressource files
contient une collection de champs capabilities
booléens utilisés pour indiquer si une action peut être effectuée sur un fichier.
Les restrictions de contenu contiennent les capabilities
suivantes:
capabilities.canModifyEditorContentRestriction
: indique si l'utilisateur actuel peut ajouter ou modifier une restriction de contenu.capabilities.canModifyOwnerContentRestriction
: indique si l'utilisateur actuel peut ajouter ou modifier une restriction de contenu du propriétaire.capabilities.canRemoveContentRestriction
: indique si l'utilisateur actuel peut supprimer la restriction de contenu appliquée (le cas échéant).
Pour en savoir plus, consultez la section Fonctionnalités.
Pour obtenir un exemple de récupération du fichier capabilities
, consultez la section Vérifier les autorisations utilisateur.
Empêcher les utilisateurs de télécharger, d'imprimer ou de copier votre fichier
Vous pouvez limiter la façon dont les utilisateurs disposant des autorisations role=commenter
ou role=reader
peuvent télécharger, imprimer et copier des fichiers dans Drive, Docs, Sheets et Slides.
Pour supprimer les options de téléchargement, d'impression et de copie des fichiers, utilisez la méthode files.update
avec le champ booléen copyRequiresWriterPermission
défini sur true
.