Dosya içeriğini koruma

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:

İç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.

Drive dosya listesinde içerik kısıtlaması olan bir dosya.
Şekil 1. Drive dosya listesinde içerik kısıtlaması olan bir dosya.

İç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:

  1. Drive'da, içerik kısıtlaması olan dosyayı sağ tıklayın ve Kilidi aç öğesini tıklayın.

    Drive dosya listesindeki bir dosya içeriği kısıtlamasını kaldırma.
    Şekil 2. Drive dosya listesindeki bir dosya içeriği kısıtlamasını kaldırın.
  2. İçerik kısıtlaması olan dosyayı açın ve (Kilitli mod) > Dosyanın kilidini aç'ı tıklayın.

    Dokümandaki bir dosya içeriği kısıtlamasını kaldırın.
    Şekil 3. Doküman içindeki bir dosya içeriği kısıtlamasını kaldırı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.