L'API Google Drive supporta diversi modi per impedire la modifica dei file, tra cui la limitazione dei contenuti dei file e il divieto di scaricare, stampare o copiare i file.
Rendere i file di sola lettura con limitazioni dei contenuti di Drive
Puoi aggiungere una limitazione dei contenuti a un file di Google Drive per impedire agli utenti di:
- 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 di sola lettura i contenuti di un elemento di Drive senza modificare le autorizzazioni di accesso dell'elemento. Ciò significa che non è una limitazione di accesso. Sebbene gli utenti non possano modificare i contenuti del file, sono comunque consentite altre operazioni 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 in un file in Drive, un utente deve disporre delle autorizzazioni associate. Per un file o una cartella su 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 su un Drive condiviso con
restrizione 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 per un file, vedi
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
per un elemento sovrascriverà quella esistente.
Scenari relativi alle 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 ad alcuni dei seguenti motivi:
- Sospendere il lavoro su un documento collaborativo durante i periodi di revisione o controllo.
- Impostazione di un elemento sullo stato "Conclusa", ad esempio Approvato.
- Impedire le modifiche durante una riunione sensibile.
- Divieto di modifiche esterne per flussi di lavoro gestiti da sistemi automatici.
- Limitare le modifiche da parte di Google Apps Script e dei componenti aggiuntivi di Google Workspace.
- Evitare le modifiche accidentali a un documento.
Tieni presente che, anche se le limitazioni dei contenuti possono aiutare a gestire i contenuti, non è utile per impedire agli utenti con autorizzazioni sufficienti di continuare a lavorare su un elemento. Inoltre, non è un modo per creare un record immutabile. Le restrizioni dei contenuti di Drive sono modificabili, pertanto una limitazione dei contenuti di un elemento non garantisce che l'elemento non cambi mai.
Gestire i file con limitazioni dei contenuti
Documenti Google, Fogli Google e Presentazioni Google, così come tutti gli altri file, possono includere limitazioni dei contenuti.
Una limitazione dei contenuti di un elemento impedisce la modifica del titolo e dei 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, così come l'ordine e il numero delle diapositive
Alcuni tipi di file non possono contenere una limitazione dei contenuti. Ecco alcuni esempi:
- Moduli Google
- Google Sites
- Disegni Google
- Scorciatoie e scorciatoie di terze parti. Per ulteriori informazioni, consulta Creare un file di scorciatoia per i contenuti memorizzati nella tua app e Creare una scorciatoia a un file di Drive.
Aggiungere una limitazione dei contenuti
Per aggiungere una limitazione dei contenuti dei file, utilizza il metodo files.update
con il campo contentRestrictions.readOnly
impostato su true
. Aggiungi un elemento reason
facoltativo per
il motivo dell'aggiunta della limitazione, ad esempio "Contratto concluso". 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 valore fileId
del file che vuoi modificare.
Quando esegui il codice campione, il file è limitato ai contenuti e viene visualizzato un simbolo di blocco (interfaccia utente (UI) di Google Drive. Ora il file è di sola lettura.
) accanto al nome del file 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 valore fileId
del file che vuoi modificare.
Quando esegui il codice campione, il file non è più soggetto a limitazioni per i contenuti.
Puoi anche utilizzare l'interfaccia utente di Drive per rimuovere una restrizione dei contenuti e consentire la modifica dei contenuti (a condizione di disporre delle autorizzazioni corrette). Per farlo, hai due opzioni:
Su Drive, fai clic con il pulsante destro del mouse sul file con una restrizione di contenuti e fai clic 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 se è presente una limitazione dei contenuti, utilizza il metodo files.get
con il campo contentRestrictions
restituito. 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 valore fileId
del file che vuoi controllare.
Quando esegui il codice campione, il metodo restituisce una risorsa ContentRestriction
, se presente.
Aggiungi una limitazione dei contenuti modificabile solo dal proprietario del file
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 ai 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 valore fileId
del file che vuoi modificare.
Quando esegui il codice campione, il file è soggetto a limitazioni per i contenuti e solo i proprietari possono rimuoverlo. Se sei il proprietario del file, nell' interfaccia utente di Drive (UI) viene visualizzato un simbolo di blocco attivo ( ) accanto al nome del file. Se non sei il proprietario, il simbolo del lucchetto è attenuato.
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 includono 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 a livello di proprietario.capabilities.canRemoveContentRestriction
: indica se l'utente corrente può rimuovere la restrizione dei contenuti applicata (se presente).
Per ulteriori informazioni, consulta la sezione Funzionalità.
Per un esempio di recupero del file capabilities
, consulta Verificare le autorizzazioni degli utenti.
Impedire agli utenti di scaricare, stampare o copiare i file
Puoi limitare il modo in cui gli utenti con autorizzazioni role=commenter
o role=reader
possono scaricare, stampare e copiare file su Drive, Documenti, Fogli e Presentazioni.
Per rimuovere le opzioni per scaricare, stampare e copiare file, utilizza il metodo files.update
con il campo booleano copyRequiresWriterPermission
impostato su true
.