Google Drive API, dosya değiştirmeyi önlemek için dosya içeriğinin kısıtlanması ve dosyaları indirme, yazdırma veya kopyalama seçeneğinin yasaklanması gibi çeşitli yöntemleri destekler.
Drive içerik kısıtlamalarıyla dosyaları salt okunur hale getirme
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ık değiştiriliyor
- İçerik düzenlemeleri yapma
- Düzeltme yükleme
- Yorum ekleme veya değiştirme
İçerik kısıtlamaları uygulamak, bir Drive öğesinin erişim izinlerini değiştirmeden söz konusu öğenin içeriğinin salt okunur hale getirilmesini sağlayan bir mekanizmadır. Bu, bir erişim kısıtlaması olmadığı anlamına gelir. Kullanıcılar dosyanın içeriğini değiştiremese de erişim düzeyine göre diğer işlemlere izin verilir (örneğin, düzenleme erişimine sahip bir kullanıcı hâlâ bir öğeyi taşıyabilir veya paylaşım ayarlarını değiştirebilir).
Kullanıcının Drive'daki bir dosyaya içerik kısıtlaması eklemek veya dosyadan içerik kısıtlaması kaldırmak için ilişkili izinlere sahip olması gerekir. Drive'ım bölümündeki bir dosya veya klasöre ya da capabilities.canModifyEditorContentRestriction
içeren bir ortak Drive'a role=writer
atanmış olmalıdır. Drive'ım bölümündeki veya ownerRestricted
içerik kısıtlaması olan bir ortak Drive'daki dosya veya klasör için dosyanın sahibi olmanız veya role=organizer
dosyanızın olması gerekir. İçerik kısıtlaması olan bir öğeyi görüntülemek için kullanıcıların role=reader
veya daha yüksek bir sürüme sahip olması gerekir. Rollerin tam listesi için Roller ve izinler bölümüne bakın. Bir dosyadaki izinleri değiştirmek için İzinleri değiştirme bölümüne bakın.
İç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ı ayarladığınızda mevcut öğenin üzerine yazıldığını unutmayın.
İçerik kısıtlamalarıyla ilgili senaryolar
Bir Drive öğesiyle ilgili içerik kısıtlaması, kullanıcılara içeriğin değiştirilmemesi gerektiğini belirtir. Bunun nedeni aşağıdakilerden bazıları olabilir:
- İnceleme veya denetleme dönemlerinde, ortak çalışmaya dayalı bir doküman üzerinde çalışmayı duraklatma.
- Bir öğeyi onaylandı gibi nihai bir duruma ayarlama.
- Hassas bir toplantı sırasında değişiklik yapılmasını önleme.
- Otomatik sistemler tarafından işlenen iş akışları için harici değişiklikleri engelleme.
- 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ı içeriğin yönetilmesine yardımcı olsa da yeterli izinlere sahip kullanıcıların bir öğe üzerinde çalışmaya devam etmesini engellemek için tasarlanmamıştır. Ayrıca, bu yöntem sabit kayıt oluşturmak için kullanılamaz. Drive içerik kısıtlamaları değiştirilebilir. Bu nedenle, bir öğeye uygulanan içerik kısıtlaması, öğenin asla 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 dosyalarda içerik kısıtlamaları bulunabilir.
Bir öğedeki içerik kısıtlaması, öğenin başlığında ve içeriğinde aşağıdaki gibi değişiklikler yapılmasını engeller:
- Yorumlar ve öneriler (Dokümanlar, E-Tablolar, Slaytlar ve ikili dosyalarda)
- İkili dosya düzeltmeleri
- Dokümanlar'da metin ve biçimlendirme
- E-Tablolar'daki metin veya formüller, e-Tablolar düzeni 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. Aşağıda birkaç örnek verilmiştir:
- Google Forms
- Google Sites
- Google Çizimler
- Kısayollar ve üçüncü taraf kısayolları. Daha fazla bilgi edinmek için Uygulamanız tarafından depolanan içeriğe kısayol dosyası oluşturma ve Drive dosyası kısayolu oluşturma bölümlerine göz atın.
İçerik kısıtlaması ekle
Dosya içeriği kısıtlaması eklemek için contentRestrictions.readOnly
alanı true
olarak ayarlanmış şekilde files.update
yöntemini kullanın. Kısıtlamayı neden eklediğinizle ilgili olarak, "Kesinleşmiş sözleşme" gibi isteğe bağlı bir reason
ekleyin. 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 kısmını, değiştirmek istediğiniz dosyanın fileId
değeriyle değiştirin.
Örnek kodu çalıştırdığınızda dosyanın içeriği kısıtlı 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 olur.
İçerik kısıtlamasını kaldırma
Bir dosya içeriği kısıtlamasını kaldırmak için contentRestrictions.readOnly
alanı false
olarak ayarlanmış şekilde 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 kısıtlamalı olmaz.
Bir içerik kısıtlamasını kaldırmak ve (doğru izinlere sahip olmanız koşuluyla) içerik düzenlemeye izin vermek için de Drive kullanıcı arayüzünü kullanabilirsiniz. Bunu yapmak için iki seçenek vardır:
Drive'da, içerik kısıtlaması olan dosyayı sağ tıklayın ve Kilidi aç
öğesini tıklayın.İçerik kısıtlaması olan dosyayı açın ve (Kilitli mod)> Dosyanın kilidini aç'ı tıklayın.
İçerik kısıtlaması olup olmadığını kontrol edin
İç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 kısmını, kontrol etmek istediğiniz dosyanın fileId
ile değiştirin.
Ö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 içerik kısıtlaması ekleme
Mekanizmayı yalnızca dosya sahiplerinin açabileceği şekilde dosya içeriği kısıtlaması eklemek için files.update
yöntemini kullanarak contentRestrictions.ownerRestricted
boole alanı true
olarak ayarlayın. Aşağıdaki kod örneğinde yalnızca dosya sahipleri için içerik kısıtlaması ekleme işlemi 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 kısmını, değiştirmek istediğiniz dosyanın fileId
değeriyle değiştirin.
Örnek kodu çalıştırdığınızda dosya içeriği kısıtlı olur ve yalnızca dosya sahipleri dosyayı kaldırabilir. Dosyanın sahibiyseniz Drive kullanıcı arayüzünde (UI) dosya adının yanında bir etkin kilit simgesi ( ) görünür. Cihazın sahibi siz değilseniz kilit simgesi karartılır.
ownerRestricted
işaretini kaldırmak için files.update
yöntemini, contentRestrictions.ownerRestricted
alanı false
değerine ayarlanmış şekilde kullanın.
İçerik kısıtlama özellikleri
files
kaynağı, bir dosyada işlemin gerçekleştirilip gerçekleştirilemeyeceğini belirtmek için kullanılan capabilities
boole alanları koleksiyonunu içerir.
İçerik kısıtlamaları şunları içerir: capabilities
capabilities.canModifyEditorContentRestriction
: Geçerli kullanıcının bir içerik kısıtlaması ekleyip ekleyemeyeceğini veya değiştirebileceğini belirtir.capabilities.canModifyOwnerContentRestriction
: Geçerli kullanıcının sahip içerik kısıtlaması ekleyip ekleyemeyeceğini veya değiştiremeyeceğini belirtir.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ın alınmasına ilişkin bir örnek 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.
Dosya indirme, yazdırma ve kopyalama seçeneklerini kaldırmak için copyRequiresWriterPermission
boole alanı true
olarak ayarlanmış şekilde files.update
yöntemini kullanın.