Google Drive API mendukung beberapa cara untuk mencegah modifikasi file, termasuk mengajukan batasan konten dan melarang opsi untuk mendownload, mencetak, atau menyalin .
Membuat file menjadi hanya baca dengan pembatasan konten Drive
Anda dapat menambahkan batasan konten ke file Google Drive untuk mencegah pengguna dengan melakukan hal berikut:
- Mengubah judul
- Melakukan pengeditan konten
- Mengupload revisi
- Menambahkan atau mengubah komentar
Menerapkan pembatasan konten adalah mekanisme yang memungkinkan konten dari Item Drive akan dibuat hanya-baca tanpa mengubah akses izin. Ini berarti bukan pembatasan akses. Meskipun pengguna tidak dapat mengubah konten file, operasi masih diizinkan berdasarkan tingkat akses (misalnya, pengguna dengan akses edit tetap dapat memindahkan item atau mengubah setelan berbaginya).
Untuk menambahkan atau menghapus batasan konten pada file di Drive, pengguna harus
harus memiliki atribut
izin. Untuk file atau folder di
Drive Saya atau drive bersama dengan
capabilities.canModifyEditorContentRestriction
, Anda harus memiliki role=writer
ditugaskan. Untuk file atau folder di Drive Saya atau drive bersama dengan
batasan konten ownerRestricted
, Anda harus memiliki file tersebut atau memiliki
role=organizer
. Untuk melihat item dengan batasan konten, pengguna harus memiliki
role=reader
atau lebih tinggi. Untuk mengetahui daftar lengkap peran, lihat Peran &
izin akses. Untuk mengubah izin pada file, lihat
Mengubah izin.
Anda dapat menggunakan kolom boolean contentRestrictions.readOnly
pada
Resource files
yang akan ditetapkan
pembatasan konten. Perhatikan bahwa menyetel batasan konten pada item
menimpa yang sudah ada.
Skenario untuk batasan konten
Batasan konten pada item Drive memberi tahu pengguna bahwa konten tersebut tidak boleh diubah. Hal ini dapat terjadi karena beberapa alasan berikut:
- Menjeda pekerjaan pada dokumen kolaboratif selama periode peninjauan atau audit.
- Menetapkan item ke status akhir, seperti disetujui.
- Mencegah perubahan selama rapat yang sensitif.
- Melarang perubahan eksternal untuk alur kerja yang ditangani oleh sistem otomatis.
- Membatasi edit oleh Google Apps Script dan Add-on Google Workspace.
- Menghindari pengeditan yang tidak disengaja pada dokumen.
Perlu diperhatikan bahwa meskipun pembatasan konten dapat membantu mengelola konten, dimaksudkan untuk mencegah pengguna dengan izin yang memadai untuk terus bekerja pada yang bermanfaat. Selain itu, ini bukan cara untuk membuat kumpulan data yang tidak dapat diubah. Pembatasan konten Drive dapat diubah, sehingga pembatasan konten pada suatu item tidak menjamin bahwa item tersebut tidak pernah berubah.
Mengelola file dengan batasan konten
Google Dokumen, Google Spreadsheet, dan Google Slide, serta semua file lainnya, dapat berisi batasan konten.
Batasan konten pada item mencegah perubahan pada judul dan kontennya, termasuk:
- Komentar dan saran (di Dokumen, Spreadsheet, Slide, dan file biner)
- Revisi file biner
- Teks dan pemformatan di Dokumen
- Teks atau formula di {i> Sheets<i}, tata letak {i>Sheets<i}, dan instance di Spreadsheet
- Semua konten di Slide, serta urutan dan jumlah slide
Jenis file tertentu tidak boleh berisi batasan konten. Beberapa contohnya adalah:
- Google Formulir
- Google Sites
- Google Gambar
- Pintasan dan pintasan pihak ketiga. Untuk informasi selengkapnya, lihat Membuat file pintasan ke konten yang disimpan oleh app dan Buat pintasan ke File Drive.
Tambahkan batasan konten
Untuk menambahkan batasan konten file, gunakan
Metode files.update
dengan
Kolom contentRestrictions.readOnly
disetel ke true
. Tambahkan reason
opsional untuk
alasan Anda menambahkan batasan, seperti "Kontrak yang diselesaikan". Hal berikut
contoh kode menunjukkan cara menambahkan batasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
dari file yang ingin Anda
modifikasi.
Saat Anda menjalankan kode contoh, file akan dibatasi kontennya dan simbol gembok (antarmuka pengguna Google Drive (UI). Tujuan sekarang file hanya dapat dibaca.
) muncul di samping nama file dalamMenghapus batasan konten
Untuk menghapus batasan konten file, gunakan metode files.update
dengan elemen
Kolom contentRestrictions.readOnly
disetel ke false
. Contoh kode berikut
menunjukkan cara menghapus batasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
dari file yang ingin Anda
modifikasi.
Saat Anda menjalankan kode contoh, konten file tidak lagi dibatasi.
Anda juga dapat menggunakan UI Drive untuk menghapus batasan konten dan izinkan pengeditan konten (asalkan Anda memiliki izin yang benar). Ada dua opsi untuk melakukan ini:
Di Drive, klik kanan file yang memiliki pembatasan konten dan klik Buka kunci
.Buka file yang memiliki batasan konten, lalu klik (Mode terkunci) > Buka kunci file.
Memeriksa pembatasan konten
Untuk memeriksa pembatasan konten, gunakan
Metode files.get
dengan
contentRestrictions
menampilkan kolom. Contoh kode berikut menunjukkan cara
periksa status pembatasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
dari file yang ingin Anda
centang.
Saat Anda menjalankan kode contoh, metode tersebut akan menampilkan
ContentRestriction
jika ada.
Tambahkan batasan konten yang hanya dapat diubah oleh pemilik file
Untuk menambahkan batasan konten file sehingga
hanya pemilik file yang dapat mengganti mekanisme,
gunakan metode files.update
dengan
kolom boolean contentRestrictions.ownerRestricted
yang disetel ke true
. Tujuan
contoh kode berikut menunjukkan cara menambahkan batasan konten untuk pemilik file
hanya:
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;
}
}
Ganti FILE_ID dengan fileId
dari file yang ingin Anda
modifikasi.
Saat Anda menjalankan kode contoh, file tersebut akan dibatasi kontennya dan hanya file pemilik dapat menghapusnya. Jika Anda adalah pemilik file, simbol gembok aktif ( Antarmuka pengguna Drive (UI). Jika Anda bukan pemiliknya, simbol gembok diredupkan.
) muncul di samping nama file dalam folderUntuk menghapus flag ownerRestricted
, gunakan metode files.update
dengan
Kolom contentRestrictions.ownerRestricted
disetel ke false
.
Kemampuan batasan konten
Resource files
berisi
kumpulan kolom capabilities
boolean yang digunakan untuk menunjukkan apakah suatu tindakan
dapat dilakukan pada file.
Batasan konten mencakup capabilities
berikut:
capabilities.canModifyEditorContentRestriction
: Apakah pengguna saat ini dapat menambahkan atau mengubah batasan konten.capabilities.canModifyOwnerContentRestriction
: Apakah pengguna saat ini dapat menambahkan atau mengubah pembatasan konten pemilik.capabilities.canRemoveContentRestriction
: Apakah pengguna saat ini dapat hapus batasan konten yang diterapkan (jika ada).
Untuk informasi selengkapnya, lihat Kemampuan.
Untuk contoh mengambil file capabilities
, lihat Memverifikasi pengguna
izin.
Mencegah pengguna mendownload, mencetak, atau menyalin file Anda
Anda dapat membatasi cara pengguna dengan izin role=commenter
atau role=reader
dapat
mendownload, mencetak, dan menyalin file dalam Drive,
Dokumen, Spreadsheet, dan Slide.
Untuk menghapus opsi mendownload, mencetak, dan menyalin file, gunakan
Metode files.update
dengan
Kolom boolean copyRequiresWriterPermission
ditetapkan ke true
.