L'API Google Drive supporta diversi modi per impedire la modifica dei file, tra cui la limitazione dei contenuti dei file e la proibizione dell'opzione di download, stampa o copia dei file.
Impostare i file come di sola lettura con le limitazioni dei contenuti di Drive
Puoi aggiungere una limitazione dei contenuti a un file di Google Drive per impedire agli utenti di svolgere le seguenti operazioni:
- Modifica del titolo
- Apportare modifiche ai contenuti
- Caricamento di una revisione
- Aggiunta o modifica di commenti
L'applicazione di limitazioni dei contenuti è un meccanismo che consente di rendere i contenuti di un elemento di Drive di sola lettura senza modificare le autorizzazioni di accesso all'elemento. Ciò significa che non si tratta di una limitazione di accesso. Sebbene gli utenti non possano modificare i contenuti del file, altre operazioni sono comunque consentite in base al livello di accesso (ad esempio, un utente con accesso in modifica può comunque spostare un elemento o modificarne le impostazioni di condivisione).
Per aggiungere o rimuovere una limitazione dei contenuti da un file in Drive, un utente deve avere le autorizzazioni associate. Per un file o una cartella in Il mio Drive o su un Drive condiviso con capabilities.canModifyEditorContentRestriction
, devi aver assegnato role=writer
. Per un file o una cartella in Il mio Drive o in un Drive condiviso con
una limitazione dei contenuti di ownerRestricted
, devi essere il proprietario del file o avere
role=organizer
. Per visualizzare un elemento con una limitazione dei contenuti, gli utenti devono avere
role=reader
o versioni successive. Per un elenco completo dei ruoli, consulta Ruoli e autorizzazioni. Per modificare le autorizzazioni di un file, consulta
Modificare le autorizzazioni.
Puoi utilizzare il campo booleano contentRestrictions.readOnly
nella risorsa
files
per impostare
una limitazione dei contenuti. Tieni presente che l'impostazione di una limitazione dei contenuti su un elemento soprascrive quella esistente.
Scenari per le limitazioni dei contenuti
Una limitazione dei contenuti su un elemento di Drive indica agli utenti che i contenuti non devono essere modificati. Ciò può essere dovuto a uno dei seguenti motivi:
- Mettere in pausa il lavoro su un documento collaborativo durante i periodi di revisione o controllo.
- Impostazione di un elemento su uno stato finale, ad esempio Approvato.
- Impedire modifiche durante una riunione sensibile.
- Vietare le modifiche esterne per i flussi di lavoro gestiti da sistemi automatici.
- Limitare le modifiche apportate da Google Apps Script e dai componenti aggiuntivi di Google Workspace.
- Evitare modifiche accidentali a un documento.
Tieni presente però che, sebbene le limitazioni dei contenuti possano essere utili per gestirli, non hanno lo scopo di impedire agli utenti con autorizzazioni sufficienti di continuare a lavorare a un elemento. Inoltre, non è un modo per creare un record immutabile. Le limitazioni dei contenuti di Drive sono modificabili, quindi una limitazione dei contenuti su un elemento non garantisce che l'elemento non venga mai modificato.
Gestire i file con limitazioni dei contenuti
Documenti, Fogli e Presentazioni Google, così come tutti gli altri file, possono contenere limitazioni relative ai contenuti.
Una limitazione dei contenuti su un articolo impedisce di modificare il titolo e i contenuti, tra cui:
- Commenti e suggerimenti (su Documenti, Fogli, Presentazioni e file binari)
- Revisioni di un file binario
- Testo e formattazione in Documenti
- Testo o formule in Fogli, un layout di Fogli e istanze in Fogli
- Tutti i contenuti di Presentazioni, nonché l'ordine e il numero delle diapositive
Alcuni tipi di file non possono contenere limitazioni relative ai contenuti. Ecco alcuni esempi:
- Moduli Google
- Google Sites
- Disegni Google
- Scorciatoie e scorciatoie di terze parti. Per ulteriori informazioni, vedi Creare un file di scorciatoia per i contenuti archiviati dall'app e Creare una scorciatoia per un file di Drive.
Aggiungere una limitazione dei contenuti
Per aggiungere una limitazione dei contenuti di un file, utilizza il metodo
files.update
con il
contentRestrictions.readOnly
impostato su true
. Aggiungi un valore facoltativo reason
per indicare il motivo per cui aggiungi la limitazione, ad esempio "Contratto finalizzato". Il seguente
esempio di codice mostra come aggiungere una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il fileId
del file che vuoi modificare.
Quando esegui il codice di esempio, i contenuti del file sono limitati e accanto al nome del file viene visualizzato un simbolo di blocco (interfaccia utente (UI) di Google Drive. Il file è ora di sola lettura.
) nell'Rimuovere una limitazione dei contenuti
Per rimuovere una limitazione dei contenuti di un file, utilizza il metodo files.update
con il campo contentRestrictions.readOnly
impostato su false
. Il seguente esempio di codice
mostra come rimuovere una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il fileId
del file che vuoi modificare.
Quando esegui il codice di esempio, il file non è più soggetto a limitazioni relative ai contenuti.
Puoi anche utilizzare l'interfaccia utente di Drive per rimuovere una limitazione dei contenuti e consentire la modifica dei contenuti (a condizione che tu disponga delle autorizzazioni corrette). Per farlo, hai due possibilità:
In Drive, fai clic con il tasto destro del mouse sul file con una limitazione dei contenuti e poi su Sblocca
.Apri il file con una limitazione dei contenuti e fai clic su (Modalità di blocco) > Sblocca file.
Verificare la presenza di una limitazione dei contenuti
Per verificare la presenza di una limitazione dei contenuti, utilizza il metodo files.get
con il campo restituito contentRestrictions
. Il seguente esempio di codice mostra come controllare lo stato di una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il fileId
del file che vuoi controllare.
Quando esegui il codice di esempio, il metodo restituisce una risorsa
ContentRestriction
se presente.
Aggiungere una limitazione dei contenuti che solo il proprietario del file può modificare
Per aggiungere una limitazione dei contenuti dei file in modo che solo i proprietari dei file possano attivare/disattivare il meccanismo,
utilizza il metodo files.update
con
il campo booleano contentRestrictions.ownerRestricted
impostato su true
. Il seguente esempio di codice mostra come aggiungere una limitazione dei contenuti solo per i proprietari dei file:
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;
}
}
Sostituisci FILE_ID con il fileId
del file che vuoi modificare.
Quando esegui il codice di esempio, i contenuti del file sono limitati e solo i proprietari possono rimuoverli. Se sei il proprietario del file, accanto al nome del file viene visualizzato un simbolo di blocco attivo ( interfaccia utente (UI) di Drive. Se non sei il proprietario, il simbolo del lucchetto è attenuato.
) nell'Per rimuovere il flag ownerRestricted
, utilizza il metodo files.update
con il campo contentRestrictions.ownerRestricted
impostato su false
.
Funzionalità di limitazione dei contenuti
Una risorsa files
contiene una raccolta di campi capabilities
booleani utilizzati per indicare se è possibile eseguire un'azione su un file.
Le limitazioni dei contenuti contengono i seguenti capabilities
:
capabilities.canModifyEditorContentRestriction
: indica se l'utente corrente può aggiungere o modificare una restrizione dei contenuti.capabilities.canModifyOwnerContentRestriction
: indica se l'utente corrente può aggiungere o modificare una limitazione dei contenuti del proprietario.capabilities.canRemoveContentRestriction
: indica se l'utente corrente può rimuovere la limitazione dei contenuti applicata (se presente).
Per ulteriori informazioni, consulta Funzionalità.
Per un esempio di recupero del file capabilities
, consulta Verificare le autorizzazioni
dell'utente.
Impedire agli utenti di scaricare, stampare o copiare un file
Puoi limitare le modalità di scaricamento, stampa e copia dei file da parte degli utenti con autorizzazioni role=commenter
o role=reader
in Drive, Documenti, Fogli e Presentazioni.
Per rimuovere le opzioni per scaricare, stampare e copiare i file, utilizza il metodo files.update
con il campo booleano copyRequiresWriterPermission
impostato su true
.