Dosya içeriğini koruma

Google Drive API, dosyalarda değişiklik yapılmasını önlemek için aşağıdakiler de dahil olmak üzere çeşitli yöntemleri destekler: dosya içeriğini kısıtlamayı ve bu tür içerikleri indirme, yazdırma veya kopyalama seçeneklerini yasaklama dosyalar.

Drive içerik kısıtlamalarıyla dosyaları salt okunur yapma

Kullanıcıların şunları yapmasını engellemek için Google Drive dosyasına bir içerik kısıtlaması ekleyebilirsiniz: şunları yapabilirsiniz:

  • Başlığı değiştirme
  • İçerik düzenlemeleri yapma
  • Düzeltme yükleme
  • Yorum ekleme veya değiştirme

İçerik kısıtlamaları uygulamak, bir içeriğin içeriğine izin veren bir mekanizmadır. Drive öğesinin, öğenin ayarı değiştirilmeden salt okunur hale getirilmesi için erişim izinlerine tabidir. Bu da iletişimin erişim kısıtlaması değil. Kullanıcılar dosyanın içeriğini değiştiremez ancak diğer kullanıcılar işlemlere yine de erişim düzeyine bağlı olarak izin verilir (örneğin, düzenleme erişimi, öğeyi taşımaya veya paylaşım ayarlarını değiştirmeye devam edebilir).

Drive'daki bir dosyaya içerik kısıtlaması eklemek veya dosyayı kaldırmak için kullanıcının, ile ilişkili izinlerini inceleyin. Şuradaki bir dosya veya klasör için: Drive'ım veya capabilities.canModifyEditorContentRestriction, role=writer olması gerekir atanır. Drive'ım bölümündeki bir dosya veya klasör veya ownerRestricted içerik kısıtlaması varsa dosyanın sahibi role=organizer. İçerik kısıtlaması olan bir öğeyi görüntüleyebilmek için kullanıcıların role=reader veya üzeri. Rollerin tam listesi için şuraya bakın: Roller ve izinleriyle ilgili daha fazla bilgi edinin. Bir dosyadaki izinleri değiştirmek için şuraya bakın: İzinleri değiştirebilirsiniz.

contentRestrictions.readOnly boole alanını Ayarlanacak files kaynak olabilir. Bir öğe için içerik kısıtlaması ayarladığınızda, üzerine yazar.

İçerik kısıtlamaları senaryoları

Bir Drive öğesiyle ilgili içerik kısıtlaması, kullanıcılara hiçbir değişiklik yapılmamalıdır. 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, onaylandı gibi, kesinleşmiş bir duruma ayarlama.
  • Hassas toplantılarda değişiklik yapılmasını önleme.
  • Otomatik sistemler tarafından yönetilen iş akışları için harici değişiklik yapılması yasaktır.
  • 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üzenlemelerden kaçınma.

İçerik kısıtlamaları içeriğin yönetilmesine yardımcı olsa da yeterli izinlere sahip kullanıcıların bir uygulama üzerinde çalışmaya devam etmesini önlemek için öğe. Ayrıca, sabit kayıt oluşturamazsınız. Drive içerik kısıtlamaları değişebilir, bu nedenle içerik kısıtlaması o öğenin hiçbir zaman değişmeyeceğini garanti etmez.

İçerik kısıtlamaları olan dosyaları yönetme

diğer tüm dosyaların yanı sıra Google Dokümanlar, Google E-Tablolar ve Google Slaytlar içerik kısıtlamaları içerebilir.

Bir öğe üzerindeki içerik kısıtlaması, başlığının ve içeriğinin değiştirilmesini şunları içerir:

  • Yorumlar ve öneriler (Dokümanlar, E-Tablolar ve Slaytlar ve ikili program dosyaları)
  • İkili dosya düzeltmeleri
  • Dokümanlar'da metin ve biçimlendirme
  • E-Tablolar'da, bir E-Tablolar düzeninde, E-Tablolar'da
  • Slaytlar'daki tüm içeriğin yanı sıra slaytlar

Bazı dosya türlerinde içerik kısıtlaması bulunamaz. Aşağıda birkaç örnek verilmiştir:

İçerik kısıtlaması ekleme

Dosya içeriği kısıtlaması eklemek için files.update yöntemini kullanarak contentRestrictions.readOnly alanı true olarak ayarlandı. Şunun için isteğe bağlı bir reason ekleyin: "Kesinleşmiş sözleşme" gibi, neden kısıtlama eklediğinizi belirtin. Aşağıdakiler kod örneği, içerik kısıtlamasının nasıl ekleneceğini gösterir:

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ı, elde etmek istediğiniz dosyanın fileId değeriyle değiştirin değiştirebilirsiniz.

Örnek kodu çalıştırdığınızda, dosyada içerik kısıtlanmıştır ve dosya, kilit simgesi dosya adının yanında () görünür Google Drive kullanıcı arayüzü (kullanıcı arayüzü). İlgili içeriği oluşturmak için kullanılan dosyası 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

Bir dosya içeriği kısıtlamasını kaldırmak için files.update yöntemini contentRestrictions.readOnly alanı false olarak ayarlandı. Aşağıdaki kod örneği içerik kısıtlamasının nasıl kaldırılacağını gösterir:

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ı, elde etmek istediğiniz dosyanın fileId değeriyle değiştirin değiştirebilirsiniz.

Örnek kodu çalıştırdığınızda dosyada içerik kısıtlaması kaldırılır.

Ayrıca, Drive kullanıcı arayüzünü kullanarak bir içerik kısıtlamasını kaldırabilir ve içerik düzenlemeye izin verme (doğru izinlere sahip olmanız koşuluyla). İki tür şu seçenekleri kullanabilirsiniz:

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

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

    Dokümandaki dosya içeriği kısıtlamasını kaldırın.
    Şekil 3. Dokümandaki dosya içeriği kısıtlamasını kaldırın.
    'nı inceleyin.

İçerik kısıtlaması olup olmadığını kontrol etme

İçerik kısıtlaması olup olmadığını kontrol etmek için files.get yöntemini kullanarak contentRestrictions alan döndürüldü. Aşağıdaki kod örneğinde, Google Etiket Yöneticisi'nin içerik kısıtlamasının durumunu kontrol etmek için:

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ı, elde etmek istediğiniz dosyanın fileId değeriyle değiştirin onay kutusunu işaretleyin.

Örnek kodu çalıştırdığınızda yöntem bir ContentRestriction bir kaynak olabilir.

Yalnızca dosya sahibinin değiştirebileceği içerik kısıtlaması ekleme

Yalnızca dosya sahiplerinin mekanizmayı değiştirebileceği bir dosya içeriği kısıtlaması eklemek files.update yöntemini contentRestrictions.ownerRestricted boole alanı true olarak ayarlandı. İlgili içeriği oluşturmak için kullanılan Aşağıdaki kod örneğinde, dosya sahipleri için içerik kısıtlamasının nasıl ekleneceği gösterilmektedir yalnızca:

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ı, elde etmek istediğiniz dosyanın fileId değeriyle değiştirin değiştirebilirsiniz.

Örnek kodu çalıştırdığınızda dosyanın içeriği kısıtlanır ve yalnızca dosya sahipleri tarafından kaldırılabilir. Dosyanın sahibiyseniz içindeki dosya adının yanında etkin bir kilit simgesi () görünür Drive kullanıcı arayüzü (kullanıcı arayüzü). Eğer sahibi siz değilseniz kilit simgesi soluklaşır.

ownerRestricted işaretini kaldırmak için files.update yöntemini contentRestrictions.ownerRestricted alanı false olarak ayarlandı.

İçerik kısıtlama özellikleri

files kaynağı, bir işlemin gerçekleşip gerçekleşmeyeceğini belirtmek için kullanılan boole capabilities alanlarının koleksiyonu dosya üzerinde de gerçekleştirilebilir.

İçerik kısıtlamaları şu capabilities unsurlarını kapsar:

  • capabilities.canModifyEditorContentRestriction: Geçerli kullanıcının içerik kısıtlaması ekleyebilir veya mevcut kısıtlamayı değiştirebilirsiniz.
  • capabilities.canModifyOwnerContentRestriction: Geçerli kullanıcının sahip içerik kısıtlaması ekleyebilir veya mevcut kısıtlamayı değiştirebilirsiniz.
  • capabilities.canRemoveContentRestriction: Geçerli kullanıcının Varsa uygulanan içerik kısıtlamasını kaldırın.

Daha fazla bilgi için bkz. Özellikler.

capabilities dosyasının alınmasına ilişkin bir örnek için Kullanıcıyı doğrulama bölümüne bakın izin isteyin.

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 şu işlemleri gerçekleştirmesini sınırlayabilirsiniz: Drive'da dosya indirme, yazdırma ve kopyalama, Dokümanlar, E-Tablolar ve Slaytlar.

Dosya indirme, yazdırma ve kopyalama seçeneklerini kaldırmak için files.update yöntemini kullanarak copyRequiresWriterPermission boole alanı true olarak ayarlandı.