Interfejs Google Drive API umożliwia zapobieganie modyfikacjom plików na kilka sposobów, w tym ograniczanie zawartości plików oraz uniemożliwianie pobierania, drukowania i kopiowania plików.
Ustawianie plików jako tylko do odczytu za pomocą ograniczeń treści na Dysku
Możesz dodać ograniczenie treści do pliku na Dysku Google, aby uniemożliwić użytkownikom:
- Zmiana tytułu
- wprowadzać poprawki w treściach;
- Przesyłanie wersji
- dodawanie i modyfikowanie komentarzy,
Zastosowanie ograniczeń treści to mechanizm, który pozwala ustawić treści elementu w Drive jako tylko do odczytu bez zmiany uprawnień dostępu. Oznacza to, że nie jest to ograniczenie dostępu. Użytkownicy nie mogą modyfikować zawartości pliku, ale inne operacje są nadal dozwolone na podstawie poziomu dostępu (na przykład użytkownik z uprawnieniami do edycji może nadal przenosić element lub zmieniać jego ustawienia udostępniania).
Aby dodać lub usunąć ograniczenie treści w pliku na Dysku, użytkownik musi mieć odpowiednie uprawnienia. W przypadku pliku lub folderu na Moim dysku lub dysku współdzielonym z uprawnieniami capabilities.canModifyEditorContentRestriction
musisz mieć przypisane uprawnienia role=writer
. W przypadku pliku lub folderu na Moim dysku lub dysku współdzielonym z ograniczeniem treści ownerRestricted
musisz być właścicielem pliku lub mieć uprawnienia role=organizer
. Aby wyświetlić element z ograniczeniem treści, użytkownicy muszą mieć uprawnienia role=reader
lub wyższe. Pełną listę ról znajdziesz w artykule Role i uprawnienia. Aby zmienić uprawnienia do pliku, przeczytaj artykuł Zmienianie uprawnień.
Aby ustawić ograniczenie treści, możesz użyć pola logicznego contentRestrictions.readOnly
w zasobie files
. Pamiętaj, że ograniczenie dostępności treści
zastąpi obecne.
Scenariusze dotyczące ograniczeń treści
Ograniczenie treści elementu na Dysku informuje użytkowników, że nie należy zmieniać tych treści. Może się tak zdarzyć z kilku powodów:
- Wstrzymanie pracy nad dokumentem współdzielonym w okresie sprawdzania lub weryfikacji.
- Ustawienie elementu w stanie końcowym, np. zatwierdzonym.
- zapobieganie zmianom podczas spotkania z poufnymi informacjami;
- Zabranie możliwości wprowadzania zmian zewnętrznych w przypadku procesów obsługiwanych przez systemy automatyczne.
- Ograniczanie możliwości edytowania za pomocą Google Apps Script i dodatków do Google Workspace.
- Zapobieganie przypadkowemu edytowaniu dokumentu.
Pamiętaj jednak, że chociaż ograniczenia treści mogą ułatwiać zarządzanie treściami, nie mają na celu uniemożliwienie użytkownikom z wystarczającymi uprawnieniami dalszej pracy nad elementem. Nie jest to też sposób na utworzenie niezmiennego rekordu. Ograniczenia treści na Dysku można zmieniać, więc ograniczenie treści dotyczące elementu nie gwarantuje, że element nigdy się nie zmieni.
Zarządzanie plikami z ograniczeniami treści
Dokumenty, Arkusze i Prezentacje Google, a także wszystkie inne pliki mogą zawierać ograniczenia treści.
Ograniczenie treści elementu uniemożliwia zmianę jego tytułu i treści, w tym:
- komentarze i sugestie (w Dokumentach, Arkuszach, Prezentacjach i plikach binarnych);
- Wersje pliku binarnego
- Tekst i formatowanie w Dokumentach
- tekst lub formuły w Arkuszach, układ Arkuszy oraz wystąpienia w Arkuszach.
- Wszystkie treści w Prezentacjach oraz kolejność i liczba slajdów
Niektóre typy plików nie mogą zawierać ograniczeń treści. Oto kilka przykładów:
- Formularze Google
- Witryny Google
- Rysunki Google
- Skróty i skróty innych firm. Więcej informacji znajdziesz w artykułach Tworzenie pliku skrótu do treści przechowywanej przez aplikację i Tworzenie skrótu do pliku na Dysku.
Dodawanie ograniczenia treści
Aby dodać ograniczenie treści pliku, użyj metody files.update
z polem contentRestrictions.readOnly
ustawionym na true
. Dodaj opcjonalny reason
, aby wyjaśnić, dlaczego dodajesz ograniczenie, np. „Umowa została sfinalizowana”. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści:
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;
}
}
Zastąp FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, dostęp do pliku będzie ograniczony, a obok jego nazwy w interfejsie Dysku Google pojawi się symbol kłódki ( ). Plik jest teraz tylko do odczytu.
Usuwanie ograniczenia treści
Aby usunąć ograniczenie treści pliku, użyj metody files.update
, ustawiając pole contentRestrictions.readOnly
na false
. Poniższy przykładowy kod pokazuje, jak usunąć ograniczenie treści:
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;
}
}
Zastąp FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik nie będzie już podlegał ograniczeniom treści.
Możesz też usunąć ograniczenie treści i zezwolić na edytowanie treści w interfejsie Dysku (o ile masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:
Na Dysku kliknij plik z ograniczeniem treści prawym przyciskiem myszy i wybierz Odblokuj
.Otwórz plik z ograniczeniem treści i kliknij (Tryb zablokowany) > Odblokuj plik.
Sprawdź, czy nie ma ograniczeń treści
Aby sprawdzić, czy występują ograniczenia treści, użyj metody files.get
z polem zwracanym contentRestrictions
. Poniższy przykładowy kod pokazuje, jak sprawdzić stan ograniczenia treści:
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;
}
}
Zastąp FILE_ID wartością fileId
pliku, który chcesz sprawdzić.
Po uruchomieniu przykładowego kodu metoda zwraca zasób ContentRestriction
, jeśli istnieje.
Dodawanie ograniczenia treści, które może modyfikować tylko właściciel pliku
Aby dodać ograniczenie treści pliku, tak aby tylko właściciele plików mogli włączać mechanizm, użyj metody files.update
z polem logicznym contentRestrictions.ownerRestricted
ustawionym na true
. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści tylko dla właścicieli plików:
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;
}
}
Zastąp FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik będzie objęty ograniczeniem treści i tylko właściciele plików będą mogli go usunąć. Jeśli jesteś właścicielem pliku, obok jego nazwy w interfejsie Dysku (UI) pojawi się symbol aktywnej blokady ( ). Jeśli nie jesteś właścicielem, symbol kłódki jest wyszarzony.
Aby usunąć flagę ownerRestricted
, użyj metody files.update
z polem contentRestrictions.ownerRestricted
ustawionym na false
.
Możliwości dotyczące ograniczeń treści
Zasób files
zawiera zbiór pól logicznych capabilities
, które wskazują, czy można wykonać działanie na pliku.
Ograniczenia treści obejmują te capabilities
:
capabilities.canModifyEditorContentRestriction
: czy bieżący użytkownik może dodać lub zmodyfikować ograniczenie treści.capabilities.canModifyOwnerContentRestriction
: czy bieżący użytkownik może dodać lub zmodyfikować ograniczenie treści przez właściciela.capabilities.canRemoveContentRestriction
: określa, czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli istnieje).
Więcej informacji znajdziesz w artykule Możliwości.
Przykład pobierania pliku capabilities
znajdziesz w sekcji Sprawdzanie uprawnień użytkowników.
Uniemożliwianie użytkownikom pobierania, drukowania i kopiowania pliku
Możesz ograniczyć sposób pobierania, drukowania i kopiowania plików na Dysku, w Dokumentach, Arkuszach i Prezentacjach przez użytkowników z uprawnieniami role=commenter
lub role=reader
.
Aby usunąć opcje pobierania, drukowania i kopiowania plików, użyj metody files.update
z ustawieniem pola logicznego copyRequiresWriterPermission
na true
.