ファイル コンテンツを保護する

Google Drive API は、ファイルの変更を防止する複数の方法をサポートしています。次に例を示します。 ファイル コンテンツの制限、ダウンロード、印刷、コピーのオプションの禁止 できます。

ドライブのコンテンツの制限を使用してファイルを読み取り専用にする

Google ドライブのファイルにコンテンツの制限を追加して、 手順は次のとおりです。

  • タイトルの変更
  • コンテンツを編集する
  • リビジョンをアップロードする
  • コメントの追加または変更

コンテンツの制限を適用すると、 ドライブのアイテムを読み取り専用にする(アイテムのアイテムは変更しない) 権限にアクセスする。つまり、 アクセス制限ではありません。ユーザーはファイルの内容を変更できませんが、 オペレーションは、アクセスレベルに基づいて引き続き許可されます(たとえば、 編集権限では、引き続きアイテムの移動や共有設定の変更が可能です)。

ドライブ内のファイルのコンテンツ制限を追加または削除するには、 Pod に関連付けられた 権限。フォルダまたは 共有ドライブまたは共有ドライブに capabilities.canModifyEditorContentRestriction には role=writer が必要です 割り当てますマイドライブまたは共有ドライブ内のファイルやフォルダに対して ownerRestricted コンテンツの制限がある場合、そのファイルを所有しているか、 role=organizer。コンテンツ制限のあるアイテムを表示するには、次の要件を満たしている必要があります。 role=reader 以降。ロールの完全なリストについては、ロールと 権限。ファイルの権限を変更するには、以下をご覧ください。 権限を変更します

次のように、ブール値フィールド contentRestrictions.readOnly を使用できます。 設定する files リソース 表示されます。アイテムにコンテンツの制限を設定すると 既存のルールが上書きされます。

コンテンツの制限に関するシナリオ

ドライブのアイテムに対するコンテンツの制限は、 変更しないでください。これには、次のような理由が考えられます。

  • レビュー時や監査時に共同編集ドキュメントでの作業を一時停止する。
  • アイテムを確定状態(承認済みなど)に設定する。
  • 機密性の高い会議中の変更を防ぐ。
  • 自動システムによって処理されるワークフローの外部変更を禁止する。
  • Google Apps Script と Google Workspace アドオンによる編集の制限。
  • ドキュメントの意図しない編集を防ぐ。

コンテンツの制限はコンテンツの管理には役立ちますが、 これは、十分な権限を持つユーザーがプロジェクトでの作業を続けないよう、 表示されます。また、不変のレコードを作成する方法ではありません。 ドライブのコンテンツ制限は変更可能なため、コンテンツの制限は アイテムを変更しても、そのアイテムが決して変更されないとは限りません。

コンテンツの制限があるファイルを管理する

Google ドキュメント、Google スプレッドシート、Google スライドのほか、 コンテンツの制限を含めることができます

アイテムのコンテンツ制限により、タイトルやコンテンツを変更できない 含まれます。

  • コメントと提案(ドキュメント、スプレッドシート、 スライド、バイナリ ファイル)
  • バイナリ ファイルのリビジョン
  • ドキュメントのテキストと書式設定
  • スプレッドシート内のテキストや数式、スプレッドシート レイアウト、 スプレッドシート内のインスタンス
  • スライド内のすべてのコンテンツと、スライド内の スライド
で確認できます。

一部のファイル形式では、コンテンツの制限を設定できません。以下に例を示します。

コンテンツの制限を追加する

ファイルのコンテンツの制限を追加するには、 files.update メソッド contentRestrictions.readOnly フィールドを true に設定。オプションの reason を追加: 制限を追加する理由(「契約の確定済み」など)を入力します。次の 次のコードサンプルは、コンテンツの制限を追加する方法を示しています。

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 は、目的のファイルの fileId に置き換えます。 あります。

サンプルコードを実行すると、ファイルの内容が制限され、ロック記号が表示されます。 ()が Google ドライブのユーザー インターフェース (UI)。「 ファイルが読み取り専用になります。

ドライブのファイルリスト内にあるコンテンツ制限が適用されたファイル。
図 1. ドライブ ファイルリスト内のコンテンツ制限が適用されたファイル。

コンテンツの制限を削除する

ファイル コンテンツの制限を解除するには、files.update メソッドを contentRestrictions.readOnly フィールドを false に設定しました。次のコードサンプル は、コンテンツの制限を削除する方法を示しています。

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 は、目的のファイルの fileId に置き換えます。 あります。

サンプルコードを実行すると、ファイルはコンテンツの制限がなくなります。

ドライブの UI を使用して、コンテンツの制限を解除したり、 コンテンツの編集を許可します(適切な権限がある場合)。2 つのモデル 次のオプションがあります。

  1. ドライブでコンテンツ制限が適用されたファイルを右クリックし、 [ロック解除 ] をクリックします。

    ドライブ ファイルリスト内のファイル コンテンツの制限を解除します。
    図 2. ドライブ ファイルリスト内のファイル コンテンツの制限を解除します。
  2. コンテンツ制限のあるファイルを開き、(ロックモード)をクリックします。 > ファイルのロックを解除します。

    ドキュメント内のファイル コンテンツの制限を解除します。
    図 3. ドキュメント内のファイル コンテンツの制限を解除します。

コンテンツの制限を確認する

コンテンツの制限を確認するには、 files.get メソッド 返されたフィールド contentRestrictions 件。次のコードサンプルは、 コンテンツの制限のステータスを確認するには:

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 は、目的のファイルの fileId に置き換えます。 確認します。

サンプルコードを実行すると、メソッドは ContentRestriction 使用されます。

ファイルのオーナーのみが変更できるコンテンツの制限を追加する

ファイル コンテンツの制限を追加して、ファイルのオーナーだけがこのメカニズムを切り替えられるようにするには、 files.update メソッドを使用します。 contentRestrictions.ownerRestricted ブール値フィールドを true に設定します。「 次のコードサンプルは、ファイルのオーナーにコンテンツの制限を追加する方法を示しています。 のみ:

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 は、目的のファイルの fileId に置き換えます。 あります。

サンプルコードを実行すると、ファイルはコンテンツが制限され、ファイルのみが オーナーが削除できます。ファイルのオーナーの場合は、内でファイル名の横に有効な鍵記号()が表示されます。 ドライブのユーザー インターフェース (UI)。条件 自分がオーナーでない場合、鍵記号はグレー表示になります。

ownerRestricted フラグを削除するには、files.update メソッドを contentRestrictions.ownerRestricted フィールドを false に設定しました。

コンテンツの制限機能

files リソースには、 アクションが実行されたかどうかを示すために使用されるブール値 capabilities フィールドのコレクション ファイルに対して実行できます。

コンテンツの制限には次の capabilities が含まれます。

  • capabilities.canModifyEditorContentRestriction: 現在のユーザーかどうか コンテンツの制限を追加または変更できます。
  • capabilities.canModifyOwnerContentRestriction: 現在のユーザーかどうか 所有者のコンテンツ制限を追加または変更できます。
  • capabilities.canRemoveContentRestriction: 現在のユーザーが以下の操作を許可するかどうか 適用されているコンテンツの制限を削除します(存在する場合)。

詳細については、次をご覧ください: 機能:

ファイル capabilities を取得する例については、ユーザーの確認をご覧ください。 権限

ユーザーがファイルをダウンロード、印刷、コピーできないようにする

role=commenter 権限または role=reader 権限を持つユーザーに許可する操作を制限できます ドライブ内でファイルのダウンロード、印刷、コピーを行う スプレッドシート、スライドです。

ファイルのダウンロード、印刷、コピーのオプションを削除するには、 files.update メソッド copyRequiresWriterPermission ブール値フィールドを true に設定。