Google Drive API תומך בכמה דרכים למניעת שינוי של קבצים, כולל הגבלת תוכן הקובץ ואיסור על האפשרות להוריד, להדפיס או להעתיק קבצים.
הגדרת קבצים כקבצי קריאה בלבד באמצעות הגבלות תוכן ב-Drive
אתם יכולים להוסיף הגבלת תוכן לקובץ ב-Google Drive כדי למנוע מהמשתמשים לבצע את הפעולות הבאות:
- שינוי הכותרת
- עריכת תוכן
- העלאת גרסה
- הוספה או שינוי של תגובות
החלת הגבלות תוכן היא מנגנון שמאפשר להגדיר את התוכן של פריט ב-Drive כ'לקריאה בלבד' בלי לשנות את הרשאות הגישה של הפריט. כלומר, זו לא הגבלת גישה. המשתמשים לא יכולים לשנות את תוכן הקובץ, אבל עדיין מותר להם לבצע פעולות אחרות בהתאם לרמת הגישה (לדוגמה, משתמש עם הרשאת עריכה עדיין יכול להעביר פריט או לשנות את הגדרות השיתוף שלו).
כדי להוסיף או להסיר הגבלת תוכן על קובץ ב-Drive, למשתמש צריכות להיות ההרשאות המשויכות. כדי להשתמש בקובץ או בתיקייה בתיקיית 'האחסון שלי' או באחסון שיתופי עם capabilities.canModifyEditorContentRestriction
, צריך להיות לכם הרשאת role=writer
. כדי לשנות את ההגבלה על תוכן של קובץ או תיקייה בתיקיית 'האחסון שלי' או באחסון שיתופי עם ההגבלה ownerRestricted
, צריך להיות לכם בעלות על הקובץ או ההרשאה role=organizer
. כדי לצפות בפריט עם הגבלת תוכן, המשתמשים צריכים להיות בגיל role=reader
ומעלה. רשימה מלאה של התפקידים מופיעה במאמר תפקידים והרשאות. במאמר שינוי הרשאות מוסבר איך משנים את ההרשאות בקובץ.
אפשר להשתמש בשדה הבוליאני contentRestrictions.readOnly
במשאב files
כדי להגדיר הגבלת תוכן. חשוב לזכור שהגדרת הגבלת תוכן על פריט תוכן מוחקת את ההגבלה הקיימת.
תרחישים של הגבלות תוכן
הגבלת תוכן על פריט ב-Drive מסמנת למשתמשים שאסור לשנות את התוכן. יכולות להיות לכך כמה סיבות:
- השהיה של עבודה במסמך משותף במהלך תקופות בדיקה או ביקורת.
- הגדרת פריט למצב סופי, כמו 'אושר'.
- מניעת שינויים במהלך פגישה עם מידע רגיש.
- איסור על שינויים חיצוניים בתהליכי עבודה שמנוהלים על ידי מערכות אוטומטיות.
- הגבלת העריכות על ידי Google Apps Script ותוספים של Google Workspace.
- מניעת עריכות מקריות במסמך.
עם זאת, חשוב לזכור שהגבלות תוכן יכולות לעזור בניהול התוכן, אבל הן לא נועדו למנוע ממשתמשים עם הרשאות מספיקות להמשיך לעבוד על פריט. בנוסף, היא לא דרך ליצור רשומה שלא ניתן לשנות. הגבלות התוכן ב-Drive ניתנות לשינוי, כך שהגבלת תוכן על פריט מסוים לא מבטיחה שהפריט לא ישתנה אף פעם.
ניהול קבצים עם הגבלות תוכן
קבצים ב-Google Docs, ב-Google Sheets וב-Google Slides, וגם כל קבצים אחרים, יכולים לכלול הגבלות תוכן.
הגבלת תוכן על פריט מונעת שינויים בשם ובתוכן שלו, כולל:
- תגובות והצעות (ב-Docs, ב-Sheets, ב-Slides ובקבצים בינאריים)
- גרסאות של קובץ בינארי
- טקסט ועיצוב ב-Docs
- טקסט או נוסחאות ב-Sheets, פריסה של Sheets ומופעים ב-Sheets
- כל התוכן ב-Slides, וגם הסדר והמספר של השקפים
סוגי קבצים מסוימים לא יכולים לכלול הגבלת תוכן. דוגמאות:
- Google Forms
- Google Sites
- Google Drawings
- מקשי קיצור ומקשי קיצור של צד שלישי. מידע נוסף זמין במאמרים יצירת קובץ קיצור לתוכן שמאוחסן באפליקציה ויצירת קיצור דרך לקובץ ב-Drive.
הוספת הגבלת תוכן
כדי להוסיף הגבלה על תוכן הקובץ, משתמשים ב-method 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 Drive. הקובץ יהיה עכשיו לקריאה בלבד.
) מופיע לצד שם הקובץ בהסרת הגבלת תוכן
כדי להסיר הגבלת תוכן של קובץ, משתמשים ב-method 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
של הקובץ שרוצים לשנות.
כשמריצים את הקוד לדוגמה, ההגבלה על התוכן בקובץ מתבטלת.
אפשר גם להשתמש בממשק המשתמש של Drive כדי להסיר הגבלת תוכן ולאפשר עריכת תוכן (בתנאי שיש לכם את ההרשאות המתאימות). יש שתי אפשרויות לעשות זאת:
ב-Drive, לוחצים לחיצה ימנית על הקובץ עם הגבלת התוכן ואז לוחצים על ביטול הנעילה
.פותחים את הקובץ עם הגבלת התוכן ולוחצים על (מצב נעול) > ביטול הנעילה של הקובץ.
בדיקה אם חלה הגבלת תוכן
כדי לבדוק אם יש הגבלת תוכן, משתמשים בשיטה 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) של Drive. אם אתם לא הבעלים, סמל הנעילה יהיה כהה.
) יופיע לצד שם הקובץ בכדי להסיר את הדגל ownerRestricted
, משתמשים בשיטה files.update
עם השדה contentRestrictions.ownerRestricted
שמוגדר כ-false
.
יכולות של הגבלת תוכן
משאב files
מכיל אוסף של שדות capabilities
בוליאניים שמשמשים לציון אם אפשר לבצע פעולה בקובץ.
הגבלות התוכן מכילות את capabilities
הבאים:
capabilities.canModifyEditorContentRestriction
: האם המשתמש הנוכחי יכול להוסיף או לשנות הגבלת תוכן.capabilities.canModifyOwnerContentRestriction
: האם המשתמש הנוכחי יכול להוסיף או לשנות הגבלת תוכן של בעלים.capabilities.canRemoveContentRestriction
: אם המשתמש הנוכחי יכול להסיר את הגבלת התוכן שהוגדרה (אם יש כזו).
מידע נוסף זמין בקטע יכולות.
דוגמה לאחזור הקובץ capabilities
מופיעה במאמר אימות ההרשאות של משתמשים.
איך מונעים ממשתמשים להוריד, להדפיס או להעתיק את הקובץ
אתם יכולים להגביל את היכולת של משתמשים עם ההרשאות role=commenter
או role=reader
להוריד, להדפיס ולהעתיק קבצים ב-Drive, ב-Docs, ב-Sheets וב-Slides.
כדי להסיר את האפשרויות להורדה, להדפסה ולהעתקה של קבצים, משתמשים בשיטה files.update
עם השדה הבוליאני copyRequiresWriterPermission
שמוגדר כ-true
.