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

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

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

คุณสามารถเพิ่มการจำกัดเนื้อหาในไฟล์ 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 ของไฟล์ที่ต้องการแก้ไข

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

ไฟล์ที่มีข้อจํากัดด้านเนื้อหาภายในรายการไฟล์ในไดรฟ์
รูปที่ 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