Dosya içeriğini koruma

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:

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

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

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

  1. Drive'da, içerik kısıtlaması olan dosyayı sağ tıklayın ve Kilidi 'ı 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ırma.
  2. İçerik kısıtlaması olan dosyayı açıp (Kilitli mod) > Dosyanın kilidini aç'ı tıklayın.

    Bir doküman içindeki dosya içeriği kısıtlamasını kaldırma
    Şekil 3. Bir dokümanda dosya içeriği kısıtlamasını kaldırma

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