Interfejs Google Drive API pozwala na kilka sposobów zapobiegania modyfikacjom plików, na przykład przez ograniczenie ich zawartości oraz zakaz pobierania, drukowania lub kopiowania plików.
Udostępnianie 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
- Edytowanie treści
- Przesyłanie wersji
- Dodawanie i modyfikowanie komentarzy
Stosowanie ograniczeń treści to mechanizm, dzięki któremu zawartość elementu na Dysku jest dostępna tylko do odczytu bez zmiany uprawnień dostępu do tego elementu. Nie jest to ograniczenie dostępu. Chociaż użytkownicy nie mogą modyfikować zawartości pliku, inne operacje są nadal dozwolone w zależności od poziomu dostępu (np. użytkownik z uprawnieniami do edycji może nadal przenieść element lub zmienić jego ustawienia udostępniania).
Aby dodać lub usunąć ograniczenie treści w pliku na Dysku, użytkownik musi mieć powiązane uprawnienia. W przypadku pliku lub folderu na Moim dysku albo dysku współdzielonego z funkcją capabilities.canModifyEditorContentRestriction
musisz mieć przypisaną rolę role=writer
. W przypadku pliku lub folderu na Moim dysku albo dysku współdzielonego z ograniczeniem treści ownerRestricted
musisz być właścicielem tego pliku lub mieć
role=organizer
. Aby wyświetlić element objęty ograniczeniem treści, użytkownicy muszą mieć co najmniej role=reader
. Pełną listę ról znajdziesz w sekcji Role i uprawnienia. Aby dowiedzieć się, jak zmienić uprawnienia do pliku, zobacz Zmienianie uprawnień.
Aby ustawić ograniczenie treści, możesz użyć pola wartości logicznej contentRestrictions.readOnly
w zasobie files
. Pamiętaj, że ustawienie ograniczenia treści dla elementu
zastępuje dotychczasowe ograniczenie.
Scenariusze ograniczeń treści
Ograniczenie treści elementu na Dysku informuje użytkowników, że treści nie należy zmieniać. Oto kilka możliwych przyczyn:
- Wstrzymywanie pracy nad wspólnym dokumentem podczas kontroli lub kontroli.
- Ustawienie ostatecznego stanu elementu, np. zatwierdzonego.
- Zapobieganie zmianom podczas spotkania o charakterze wrażliwym
- Uniemożliwianie wprowadzania zewnętrznych zmian w przepływach pracy obsługiwanych przez automatyczne systemy.
- Ograniczanie możliwości edytowania przez skrypty Google Apps Script i dodatki do Google Workspace.
- Zapobieganie przypadkowemu edytowaniu dokumentu
Ograniczenia treści mogą pomóc w zarządzaniu treścią, ale nie uniemożliwiają użytkownikom z odpowiednimi uprawnieniami kontynuowania pracy nad danym elementem. Nie można w ten sposób utworzyć rekordu stałego. Ograniczenia treści na Dysku można zmieniać, więc ograniczenie treści elementu nie gwarantuje, że element nigdy się nie zmieni.
Zarządzanie plikami objętymi ograniczeniami treści
Dokumenty, Arkusze i Prezentacje Google oraz wszystkie inne pliki mogą zawierać ograniczenia treści.
Ograniczenie treści elementu zapobiega zmianie 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 i formuły w Arkuszach, układzie Arkuszy oraz w instancjach
- Wszystkie treści w Prezentacjach oraz kolejność i numer slajdów
Pewne typy plików nie mogą zawierać ograniczenia 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 skrótu do treści przechowywanej w aplikacji i Tworzenie skrótu do pliku na Dysku.
Dodaj ograniczenie treści
Aby dodać ograniczenie treści pliku, użyj metody files.update
z polem contentRestrictions.readOnly
ustawionym na true
. Dodaj opcjonalną właściwość reason
, jeśli chcesz dodać ograniczenie, np. „Sfinalizowane umowa”. Z tego przykładowego kodu dowiesz się, 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ć.
Po uruchomieniu przykładowego kodu dostęp do pliku jest ograniczony, a w interfejsie Dysku Google obok jego nazwy pojawia się symbol blokady ( ). Plik jest teraz tylko do odczytu.
Usuwanie ograniczenia treści
Aby usunąć ograniczenie treści pliku, użyj metody files.update
z polem contentRestrictions.readOnly
ustawionym na false
. Z tego przykładowego kodu dowiesz się, 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ć.
Po uruchomieniu przykładowego kodu treść pliku nie będzie już ograniczana.
W interfejsie Dysku możesz też usunąć ograniczenie treści i zezwolić na edytowanie treści (pod warunkiem, że masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:
Na Dysku kliknij prawym przyciskiem myszy plik z ograniczeniem treści i wybierz Odblokuj
.Otwórz plik z ograniczeniem treści i kliknij (Tryb blokady) > Odblokuj plik.
Sprawdź, czy nie ma ograniczeń treści
Aby sprawdzić ograniczenie treści, użyj metody files.get
ze zwróconym polem contentRestrictions
. Z poniższego przykładowego kodu dowiesz się, 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 jest dostępny).
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 przełączać mechanizm, użyj metody files.update
z polem wartości logicznej 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ć.
Po uruchomieniu przykładowego kodu dostęp do pliku jest ograniczony i tylko właściciele plików mogą go usunąć. Jeśli jesteś właścicielem pliku, obok jego nazwy w interfejsie Dysku pojawi się aktywny symbol blokady ( ). Jeśli nie jesteś właścicielem, symbol kłódki będzie wyszarzony.
Aby usunąć flagę ownerRestricted
, użyj metody files.update
z polem contentRestrictions.ownerRestricted
ustawionym na false
.
Funkcje ograniczeń treści
Zasób files
zawiera zbiór pól logicznych capabilities
, które określają, czy można wykonać działanie na pliku.
Ograniczenia treści obejmują te capabilities
:
capabilities.canModifyEditorContentRestriction
: określa, czy obecny użytkownik może dodać lub zmodyfikować ograniczenie treści.capabilities.canModifyOwnerContentRestriction
: określa, czy obecny użytkownik może dodać lub zmodyfikować ograniczenie treści właściciela.capabilities.canRemoveContentRestriction
: określa, czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli jest obecne).
Więcej informacji znajdziesz w opisie uprawnień.
Przykład pobierania pliku capabilities
znajdziesz w sekcji Weryfikowanie uprawnień użytkownika.
Blokowanie użytkownikom możliwości pobierania, drukowania i kopiowania Twojego pliku
Możesz ograniczyć sposób, w jaki użytkownicy z uprawnieniami role=commenter
lub role=reader
mogą pobierać, drukować i kopiować pliki na Dysku oraz w Dokumentach, Arkuszach i Prezentacjach.
Aby usunąć opcje pobierania, drukowania i kopiowania plików, użyj metody files.update
z polem wartości logicznej copyRequiresWriterPermission
ustawionym na true
.