ปกป้องเนื้อหาไฟล์

Google Drive API รองรับวิธีการป้องกันการปรับเปลี่ยนไฟล์หลายวิธี ดังนี้ การจำกัดเนื้อหาไฟล์และห้ามมิให้ตัวเลือกในการดาวน์โหลด พิมพ์ หรือคัดลอก

กำหนดให้ไฟล์เป็นแบบอ่านอย่างเดียวด้วยการจำกัดเนื้อหาในไดรฟ์

คุณสามารถเพิ่มการจำกัดเนื้อหาไปยังไฟล์ Google ไดรฟ์เพื่อป้องกันไม่ให้ผู้ใช้ ดังนี้

  • การแก้ไขชื่อ
  • การแก้ไขเนื้อหา
  • การอัปโหลดการแก้ไข
  • การเพิ่มหรือแก้ไขความคิดเห็น

การใช้การจำกัดเนื้อหาเป็นกลไกที่ช่วยให้เนื้อหาของ รายการในไดรฟ์ที่จะทำแบบอ่านอย่างเดียวโดยไม่เปลี่ยน สิทธิ์ในการเข้าถึง ซึ่งหมายความว่า ไม่ใช่การจำกัดการเข้าถึง ขณะที่ผู้ใช้ไม่สามารถแก้ไขเนื้อหาของไฟล์ได้ ในขณะที่ การดำเนินการยังคงได้รับอนุญาตตามระดับการเข้าถึง (เช่น ผู้ใช้ที่มี สิทธิ์แก้ไขยังสามารถย้ายรายการหรือเปลี่ยนการตั้งค่าการใช้ร่วมกัน)

หากต้องการเพิ่มหรือนำการจำกัดเนื้อหาในไฟล์ในไดรฟ์ออก ผู้ใช้ต้อง ต้องมีลิงก์ สิทธิ์ สำหรับไฟล์หรือโฟลเดอร์ใน ไดรฟ์ของฉันหรือไดรฟ์ที่แชร์กับ 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 ที่หัวข้อยืนยันผู้ใช้ สิทธิ์

ป้องกันไม่ให้ผู้ใช้ดาวน์โหลด พิมพ์ หรือคัดลอกไฟล์

คุณสามารถจำกัดสิทธิ์ของผู้ใช้ที่มีสิทธิ์ role=commenter หรือ role=reader ดาวน์โหลด พิมพ์ และคัดลอกไฟล์ภายในไดรฟ์ เอกสาร ชีต และสไลด์

หากต้องการนำตัวเลือกในการดาวน์โหลด พิมพ์ และคัดลอกไฟล์ออก ให้ใช้ files.update ที่มีเมธอด ตั้งค่าช่องบูลีน copyRequiresWriterPermission เป็น true แล้ว