Ochrona treści pliku

Interfejs API Dysku Google umożliwia zapobieganie modyfikowaniu plików na kilka sposobów, między innymi przez ograniczanie treści plików i zakazywanie ich pobierania, drukowania i kopiowania.

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:

  • Modyfikowanie 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 ustawienie ograniczenia treści dla danego produktu zastąpi dotychczasowe.

Scenariusze dotyczące ograniczeń treści

Ograniczenie treści w elemencie na Dysku informuje użytkowników, że zawartość nie może być zmieniana. 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 wprowadzaniu zmian podczas spotkania dotyczącego informacji poufnych;
  • Zabranianie wprowadzania zmian zewnętrznych w przypadku procesów obsługiwanych przez systemy automatyczne.
  • ograniczanie możliwości wprowadzania zmian przez Google Apps Script i dodatki do Google Workspace.
  • unikanie przypadkowych zmian w dokumencie.

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 w przypadku elementu uniemożliwia wprowadzanie zmian w jego tytule 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.
  • cała zawartość slajdów, a także ich kolejność i liczba;

Niektóre typy plików nie mogą zawierać ograniczeń treści. Oto kilka przykładów:

Dodawanie ograniczenia treści

Aby dodać ograniczenie treści pliku, użyj metody files.update z polem contentRestrictions.readOnly ustawionym na true. Opcjonalnie dodaj reason, aby wyjaśnić, dlaczego dodajesz ograniczenie, np. „Zakończono umowę”. 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.

Plik z ograniczeniem treści na liście plików na Dysku.
Rysunek 1. Plik z ograniczeniem treści na liście plików na Dysku.

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ż użyć interfejsu Dysku, aby usunąć ograniczenie treści i zezwolić na edytowanie treści (o ile masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:

  1. Na Dysku kliknij plik z ograniczeniem treści prawym przyciskiem myszy i wybierz Odblokuj .

    Usuwanie ograniczenia treści pliku na liście plików Dysku.
    Rysunek 2. Usuwanie ograniczenia treści pliku na liście plików na Dysku.
  2. Otwórz plik z ograniczeniem treści i kliknij (Tryb zablokowany) > Odblokuj plik.

    usunąć ograniczenie treści pliku w dokumencie;
    Rysunek 3. usunąć ograniczenie treści pliku w dokumencie.

Sprawdź, czy nie ma ograniczeń dotyczących treści

Aby sprawdzić, czy na treści nałożono ograniczenia, 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 jest obecny.

Dodaj ograniczenie treści, które może zmienić 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 będzie wygaszony.

Aby usunąć oznaczenie ownerRestricted, użyj metody files.update, w której pole contentRestrictions.ownerRestricted ma wartość 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 właściciela.
  • capabilities.canRemoveContentRestriction: czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli występuje).

Więcej informacji znajdziesz w sekcji Możliwości.

Przykładowy sposób pobierania pliku capabilities znajdziesz w sekcji Weryfikowanie uprawnień użytkownika.

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.