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
של הקובץ שרוצים לשנות.
כשמריצים את הקוד לדוגמה, התוכן מוגבל לקובץ, וסמל הנעילה (ממשק המשתמש של 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
.