L'API Google Drive permet d'empêcher la modification des fichiers de plusieurs façons, y compris en limitant le contenu des fichiers et en interdisant l'option de téléchargement, d'impression ou de copie 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 de faire ce qui suit :
- Modifier le titre
- Modifier du contenu
- Importer une révision
- Ajouter ou modifier des commentaires
Une restriction de contenu n'est pas 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 de leur niveau d'accès. Par exemple, un utilisateur disposant d'un accès en modification 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 du permissions
associé. Pour un fichier ou un dossier dans Mon Drive ou un Drive partagé avec capabilities.canModifyEditorContentRestriction
, vous devez disposer du rôle role=writer
. Pour un fichier ou un dossier dans Mon Drive ou un Drive partagé avec une restriction de contenu ownerRestricted
, vous devez être propriétaire du fichier ou disposer de l'autorisation role=organizer
. Pour afficher un élément soumis à une restriction de contenu, les utilisateurs doivent disposer de role=reader
ou d'une version ultérieure. Pour obtenir la liste complète des rôles, consultez Rôles et autorisations. Pour modifier les autorisations d'un fichier, consultez Modifier les autorisations.
Vous pouvez utiliser le champ booléen contentRestrictions.readOnly
sur la ressource files
pour définir une restriction de contenu. Notez que si vous définissez une restriction de contenu pour un élément, elle remplace celle qui existe déjà.
Scénarios pour les restrictions de contenu
Une restriction de contenu sur un élément Drive indique aux utilisateurs que le contenu ne doit pas être modifié. Voici quelques raisons possibles :
- Suspendre le travail sur un document collaboratif pendant les périodes d'examen ou d'audit.
- Définir l'état d'un élément sur "Finalisé", par exemple "Approuvé".
- empêcher les modifications pendant une réunion sensible ;
- Interdire les modifications externes pour les workflows gérés par des systèmes automatisés.
- Restreindre les modifications apportées par Google Apps Script et les modules complémentaires Google Workspace
- Éviter les modifications accidentelles d'un document.
Notez toutefois que, si les restrictions de contenu peuvent aider à gérer le contenu, elles ne sont pas destinées à empêcher les utilisateurs disposant des autorisations suffisantes de continuer à travailler sur un élément. De plus, il ne s'agit pas d'un moyen de créer un enregistrement immuable. Les restrictions de contenu Drive sont modifiables. Par conséquent, une restriction de contenu sur un élément ne garantit pas que l'é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 sur un élément empêche toute modification de son titre et de son contenu, y compris :
- Commentaires et suggestions (dans Docs, Sheets, Slides et les fichiers binaires)
- Révisions d'un fichier binaire
- Texte et mise en forme dans Docs
- Texte ou formules dans Sheets, une mise en page Sheets et des instances dans Sheets
- Tout le contenu de 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 Créer un fichier de raccourci vers du 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 expliquer 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 fichier est soumis à des restrictions de contenu et un symbole de cadenas (interface utilisateur (UI) Google Drive. Le fichier est désormais en lecture seule.
) s'affiche à côté du nom de 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 à des restrictions 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
.Figure 2. Supprimez une restriction de contenu de fichier dans une liste de fichiers Drive. Ouvrez le fichier soumis à une restriction de contenu, puis cliquez sur (Mode verrouillé) > Déverrouiller le fichier.
Figure 3. Supprimez une restriction de contenu de fichier dans un document.
Vérifier si une restriction de contenu est appliquée
Pour vérifier si une restriction de contenu est appliquée, 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 ou 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 fichier est soumis à une restriction de contenu 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 cadenas est grisé.
) s'affiche à côté du nom du fichier dans l'Pour supprimer l'indicateur 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
suivants :
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 Comprendre les fonctionnalités des fichiers.
Pour obtenir un exemple de récupération du fichier capabilities
, consultez Obtenir les capacités d'un fichier.
Empêcher les utilisateurs de télécharger, d'imprimer ou de copier votre fichier
Vous pouvez limiter la façon dont les utilisateurs peuvent télécharger, imprimer et copier des fichiers dans Drive, Docs, Sheets et Slides.
Pour déterminer si l'utilisateur peut modifier les restrictions de téléchargement appliquées par le propriétaire ou l'organisateur d'un fichier, cochez le champ booléen capabilities.canChangeItemDownloadRestriction
. Si capabilities.canChangeItemDownloadRestriction
est défini sur true
, des restrictions de téléchargement peuvent être appliquées au fichier. Pour en savoir plus, consultez Comprendre les fonctionnalités des fichiers.
Pour appliquer des restrictions de téléchargement à un fichier, définissez le champ downloadRestrictions
à l'aide de la méthode files.update
. Vous pouvez définir le champ à l'aide de l'objet DownloadRestrictionsMetadata
.
L'objet DownloadRestrictionsMetadata
comporte deux champs : itemDownloadRestriction
et effectiveDownloadRestrictionWithContext
. Les deux champs sont lisibles, mais seul itemDownloadRestriction
peut être défini. Le champ itemDownloadRestriction
renvoie un objet DownloadRestriction
. L'objet DownloadRestriction
comporte deux champs booléens distincts : restrictedForReaders
et restrictedForWriters
.
Lorsque vous définissez le champ itemDownloadRestriction
, la restriction de téléchargement du fichier est appliquée directement par le propriétaire ou l'organisateur. Il ne tient pas compte des paramètres des lecteurs partagés ni des règles de protection contre la perte de données. Pour en savoir plus, consultez À propos de la protection contre la perte de données.
Si vous mettez à jour le champ itemDownloadRestriction
en définissant le champ restrictedForWriters
sur true
, cela signifie que restrictedForReaders
est true
. De même, définir restrictedForWriters
sur true
et restrictedForReaders
sur false
revient à définir restrictedForWriters
et restrictedForReaders
sur true
.
Pour le champ effectiveDownloadRestrictionWithContext
, la restriction de téléchargement s'applique au fichier et tient compte de tous les paramètres de restriction et règles DLP.
Le champ effectiveDownloadRestrictionWithContext
peut être défini sur restrictedForWriters
ou restrictedForReaders
. Si des paramètres de restriction de téléchargement ou de copie sont définis pour les rôles correspondants dans les paramètres de fichier, les paramètres de Drive partagé ou les règles de protection contre la perte de données (y compris celles avec contexte), la valeur est définie sur true
. Sinon, elle est définie sur false
.
Rétrocompatibilité.
Nous vous recommandons d'utiliser l'objet DownloadRestriction
pour définir la façon dont les utilisateurs peuvent télécharger, imprimer et copier des fichiers.
Si vous souhaitez utiliser le champ booléen copyRequiresWriterPermission
, la fonctionnalité est différente pour la lecture et l'écriture dans le champ.
La valeur récupérée du champ copyRequiresWriterPermission
indique si les utilisateurs disposant de l'autorisation role=commenter
ou role=reader
peuvent télécharger, imprimer ou copier des fichiers dans Drive. La valeur du champ reflète la combinaison des paramètres de fichier, des paramètres du lecteur partagé ou des règles de protection contre la perte de données. Toutefois, l'évaluation du contexte pour les règles de protection contre la perte de données n'est pas incluse.
Si vous définissez le champ copyRequiresWriterPermission
sur false
, les champs restrictedForWriters
et restrictedForReaders
sont également définis sur false
. Cela signifie que les paramètres de restriction de téléchargement ou de copie sont supprimés pour tous les utilisateurs.
Champs qui contrôlent les fonctionnalités de téléchargement, d'impression et de copie
Le tableau suivant liste les champs de ressources files
qui affectent les fonctionnalités de téléchargement, d'impression et de copie :
Champ | Description | Version |
---|---|---|
capabilities.canCopy |
Indique si l'utilisateur actuel peut copier un fichier. | v2 et v3 |
capabilities.canDownload |
Indique si l'utilisateur actuel peut télécharger un fichier. | v2 et v3 |
capabilities.canChangeCopyRequiresWriterPermission |
Indique si l'utilisateur actuel peut modifier la restriction copyRequiresWriterPermission d'un fichier. |
v2 et v3 |
capabilities.canChangeItemDownloadRestriction |
Indique si l'utilisateur actuel peut modifier la restriction de téléchargement d'un fichier. | v3 uniquement |
copyRequiresWriterPermission |
Indique si les options permettant de copier, d'imprimer ou de télécharger ce fichier doivent être désactivées pour les lecteurs et les commentateurs. | v2 et v3 |
downloadRestrictions |
Restrictions de téléchargement appliquées à un fichier. | v3 uniquement |