Google Drive API, dosyalarda değişiklik yapılmasını önlemek için, dosya içeriğinin kısıtlanması ve dosya indirme, yazdırma veya kopyalama seçeneğinin engellenmesi gibi çeşitli yöntemleri destekler.
Drive içerik kısıtlamalarıyla dosyaları salt okunur yapma
Kullanıcıların aşağıdakileri yapmasını önlemek için bir Google Drive dosyasına içerik kısıtlaması ekleyebilirsiniz:
- Başlığı değiştirme
- İçerik düzenleme
- Düzeltme yükleme
- Yorum ekleme veya mevcut yorumları değiştirme
İçerik kısıtlamaları uygulamak, Drive öğesinin içeriğinin erişim izinleri değiştirilmeden salt okunur hale getirilmesine olanak tanıyan bir mekanizmadır. Yani bu bir erişim kısıtlaması değildir. Kullanıcılar dosyanın içeriğini değiştiremez ancak erişim düzeyine bağlı olarak diğer işlemlere izin verilir (örneğin, düzenleme erişimine sahip bir kullanıcı yine de bir öğeyi taşıyabilir veya paylaşım ayarlarını değiştirebilir).
Drive'daki bir dosyaya içerik kısıtlaması eklemek veya mevcut kısıtlamayı kaldırmak için kullanıcının ilgili izinlere sahip olması gerekir. Drive'ım bölümündeki veya ortak Drive'daki bir dosyaya ya da klasöre capabilities.canModifyEditorContentRestriction
atamak için role=writer
atamanız gerekir. Drive'ım bölümündeki veya ownerRestricted
içerik kısıtlaması olan ortak Drive'lardaki dosya ya da klasörler için dosyanın sahibi olmanız veya role=organizer
sahibi olmanız gerekir. İçerik kısıtlaması olan bir öğeyi görüntülemek için kullanıcıların role=reader
veya daha yeni bir sürüme sahip olması gerekir. Rollerin tam listesi için Roller ve izinler başlıklı makaleyi inceleyin. Bir dosyanın izinlerini değiştirmek için İzinleri değiştirme başlıklı makaleyi inceleyin.
İçerik kısıtlaması ayarlamak için files
kaynağındaki contentRestrictions.readOnly
boole alanını kullanabilirsiniz. Bir öğe için içerik kısıtlaması ayarlandığında mevcut kısıtlamanın üzerine yazıldığını unutmayın.
İçerik kısıtlamaları için senaryolar
Bir Drive öğesiyle ilgili içerik kısıtlaması, kullanıcılara içeriğin değiştirilmemesi gerektiğini bildirir. Bunun nedeni aşağıdakilerden biri olabilir:
- İnceleme veya denetleme dönemlerinde ortak çalışmaya dayalı bir doküman üzerindeki çalışmayı duraklatma.
- Bir öğeyi onaylanmış gibi kesinleşti durumuna ayarlama
- Hassas bir toplantı sırasında değişiklikleri önleme
- Otomatik sistemler tarafından yönetilen iş akışlarında harici değişiklikleri yasaklama.
- Google Apps Komut Dosyası ve Google Workspace Eklentileri tarafından yapılan düzenlemeleri kısıtlama.
- Dokümanda yanlışlıkla yapılan düzenlemeleri önleme
İçerik kısıtlamalarının içeriği yönetmenize yardımcı olabileceğini ancak yeterli izinlere sahip kullanıcıların bir öğe üzerinde çalışmaya devam etmesini engellemediğini unutmayın. Ayrıca, sabit bir kayıt oluşturmanın bir yolu değildir. Drive içerik kısıtlamaları değiştirilebilir olduğundan, bir öğedeki içerik kısıtlaması, öğenin hiçbir zaman değişmeyeceğini garanti etmez.
İçerik kısıtlamaları olan dosyaları yönetme
Google Dokümanlar, Google E-Tablolar ve Google Slaytlar'ın yanı sıra diğer tüm dosyalar içerik kısıtlamaları içerebilir.
Bir öğedeki içerik kısıtlaması, başlığında ve içeriğinde aşağıdakiler dahil olmak üzere değişiklik yapılmasını engeller:
- Yorumlar ve öneriler (Dokümanlar, E-Tablolar, Slaytlar ve ikili dosyalar)
- İkili program dosyasının düzeltmeleri
- Dokümanlar'da metin ve biçimlendirme
- E-Tablolar'daki metinler veya formüller, E-Tablolar'daki bir düzen ve E-Tablolar'daki örnekler
- Slaytlar'daki tüm içeriklerin yanı sıra slaytların sırası ve sayısı
Belirli dosya türleri içerik kısıtlaması içeremez. Buna örnek olarak aşağıdakiler verilebilir:
- Google Forms
- Google Sites
- Google Çizimler
- Kısayollar ve üçüncü taraf kısayolları. Daha fazla bilgi için Uygulamanız tarafından depolanan içeriğe kısayol dosyası oluşturma ve Drive dosyasına kısayol oluşturma başlıklı makaleleri inceleyin.
İçerik kısıtlaması ekleme
Dosya içeriği kısıtlaması eklemek için contentRestrictions.readOnly
alanı true
olarak ayarlanmış files.update
yöntemini kullanın. Kısıtlamayı neden eklediğinizi belirtmek için isteğe bağlı bir reason
ekleyin (ör. "Kesinleşmiş sözleşme"). Aşağıdaki kod örneğinde, içerik kısıtlamasının nasıl ekleneceği gösterilmektedir:
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;
}
}
FILE_ID yerine, değiştirmek istediğiniz dosyanın fileId
değerini yazın.
Örnek kodu çalıştırdığınızda dosya içerik kısıtlamasına tabi olur ve Google Drive kullanıcı arayüzünde (UI) dosya adının yanında bir kilit simgesi ( ) görünür. Dosya artık salt okunur.
İçerik kısıtlamasını kaldırma
Dosya içeriği kısıtlamasını kaldırmak için contentRestrictions.readOnly
alanı false
olarak ayarlanmışken files.update
yöntemini kullanın. Aşağıdaki kod örneğinde, içerik kısıtlamasının nasıl kaldırılacağı gösterilmektedir:
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;
}
}
FILE_ID kısmını, değiştirmek istediğiniz dosyanın fileId
değeriyle değiştirin.
Örnek kodu çalıştırdığınızda dosya artık içerik açısından kısıtlanmış olmaz.
İçerik kısıtlamasını kaldırmak ve içeriğin düzenlenmesine izin vermek için Drive kullanıcı arayüzünü de kullanabilirsiniz (doğru izinlere sahip olmanız gerekir). Bunu yapmanın iki yolu vardır:
Drive'da, içerik kısıtlaması olan dosyayı sağ tıklayın ve Kilidi
'ı tıklayın.İçerik kısıtlaması olan dosyayı açıp (Kilitli mod) > Dosyanın kilidini aç'ı tıklayın.
İçerik kısıtlaması olup olmadığını kontrol etme
İçerik kısıtlaması olup olmadığını kontrol etmek için contentRestrictions
döndürülen alanıyla files.get
yöntemini kullanın. Aşağıdaki kod örneğinde, içerik kısıtlamasının durumunun nasıl kontrol edileceği gösterilmektedir:
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;
}
}
FILE_ID yerine, kontrol etmek istediğiniz dosyanın fileId
değerini yazın.
Örnek kodu çalıştırdığınızda yöntem, varsa bir ContentRestriction
kaynağı döndürür.
Yalnızca dosya sahibinin değiştirebileceği bir içerik kısıtlaması ekleme
Yalnızca dosya sahipleri mekanizmayı değiştirebilsin diye bir dosya içeriği kısıtlaması eklemek için contentRestrictions.ownerRestricted
Boole alanının true
olarak ayarlandığı files.update
yöntemini kullanın. Aşağıdaki kod örneğinde, yalnızca dosya sahipleri için içerik kısıtlamasının nasıl ekleneceği gösterilmektedir:
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;
}
}
FILE_ID yerine, değiştirmek istediğiniz dosyanın fileId
değerini yazın.
Örnek kodu çalıştırdığınızda dosya içerik açısından kısıtlanır ve yalnızca dosya sahipleri tarafından kaldırılabilir. Dosyanın sahibiyseniz Drive kullanıcı arayüzünde (UI) dosya adının yanında etkin bir kilit simgesi ( ) görünür. Cihazın sahibi değilseniz kilit simgesi soluk renkte görünür.
ownerRestricted
işaretini kaldırmak için contentRestrictions.ownerRestricted
alanının false
olarak ayarlandığı files.update
yöntemini kullanın.
İçerik kısıtlama özellikleri
files
kaynağı, bir dosyada işlem yapılıp yapılamayacağını belirtmek için kullanılan bir boole capabilities
alanı koleksiyonu içerir.
İçerik kısıtlamaları aşağıdaki capabilities
'leri içerir:
capabilities.canModifyEditorContentRestriction
: Geçerli kullanıcının içerik kısıtlaması ekleyip ekleyebileceği veya mevcut kısıtlamaları değiştirip değiştiremeyeceği.capabilities.canModifyOwnerContentRestriction
: Geçerli kullanıcının içerik sahibi kısıtlaması ekleyip ekleyebileceği veya değiştirebileceği.capabilities.canRemoveContentRestriction
: Geçerli kullanıcının, uygulanan içerik kısıtlamasını (varsa) kaldırıp kaldıramayacağını belirtir.
Daha fazla bilgi için Özellikler bölümüne bakın.
capabilities
dosyasını alma örneği için Kullanıcı izinlerini doğrulama bölümüne bakın.
Kullanıcıların dosyanızı indirmesini, yazdırmasını veya kopyalamasını engelleme
role=commenter
veya role=reader
izinlerine sahip kullanıcıların Drive, Dokümanlar, E-Tablolar ve Slaytlar'da dosya indirme, yazdırma ve kopyalama şeklini sınırlandırabilirsiniz.
Dosyaları indirme, yazdırma ve kopyalama seçeneklerini kaldırmak için copyRequiresWriterPermission
doğru/yanlış alanının true
olarak ayarlandığı files.update
yöntemini kullanın.