יש כמה עקרונות שחשוב לפעול לפיהם כשמשתמשים ב-Google Docs API. למשל:
- עריכה אחורה כדי לייעל את התהליך
- תכנון שיתוף הפעולה
- איך מוודאים שהמצב עקבי באמצעות השדה
WriteControl - התחשבות בכרטיסיות
בקטעים הבאים מוסבר על העקרונות האלה.
עריכה אחורה כדי לייעל את התהליך
במסגרת קריאה אחת לשיטה
documents.batchUpdate, מסדרים את הבקשות בסדר יורד של מיקום האינדקס. כך לא צריך לחשב את השינויים באינדקס בגלל הוספות ומחיקות.
תכנון שיתוף הפעולה
מצב המסמך צפוי להשתנות. בין קריאה אחת של מתודה לקריאה אחרת, יכול להיות שמשתפי פעולה אחרים יעדכנו את המסמך, כמו שמוצג בתרשים הבא:
אם האינדקסים שגויים, יכולות להופיע שגיאות. אם כמה משתמשים עורכים מסמך באמצעות ממשק המשתמש, Google Docs מטפל בזה באופן שקוף. עם זאת, האפליקציה שלכם צריכה לנהל את זה כלקוח API. גם אם אתם לא צופים שיהיה שיתוף פעולה במסמך, חשוב לתכנת בצורה שתמנע בעיות ולוודא שמצב המסמך יישאר עקבי. כדי להבטיח עקביות, אפשר לעיין בקטע WriteControl.
איך יוצרים עקביות במצב באמצעות WriteControl
כשקוראים מסמך ואז מעדכנים אותו, אפשר לשלוט בהתנהגות של הטיפול בשינויים מתחרים באמצעות השדה WriteControl בשיטה documents.batchUpdate. WriteControl מספק הרשאה לגבי אופן הביצוע של בקשות כתיבה.
כך משתמשים בו:
- מקבלים את המסמך באמצעות השיטה
documents.getושומרים אתrevisionIdמהמשאבdocumentsשמוחזר. - כותבים את הבקשות לעדכון.
- אפשר לכלול אובייקט
WriteControlעם אחת משתי האפשרויות הבאות:- השדה
requiredRevisionIdמוגדר לערךrevisionIdשל המסמך שאליו מוחלת בקשת הכתיבה. אם המסמך השתנה מאז בקשת הקריאה של ה-API, בקשת הכתיבה לא תעובד ותוחזר שגיאה. - השדה
targetRevisionIdמוגדר לערךrevisionIdשל המסמך שאליו מוחלת בקשת הכתיבה. אם המסמך שונה מאז בקשת הקריאה של ה-API, השינויים שבוצעו בבקשת הכתיבה יחולו על השינויים שבוצעו על ידי שותפי העריכה. התוצאה של בקשת הכתיבה משלבת את השינויים של בקשת הכתיבה ואת השינויים של שותף העריכה בגרסה חדשה של המסמך. השרת של Docs אחראי למיזוג התוכן.
- השדה
דוגמה לאופן יצירת בקשה באצווה באמצעות WriteControl מופיעה כאן.
התחשבות בכרטיסיות
מסמך יחיד יכול להכיל כמה כרטיסיות, שנדרש טיפול ספציפי בבקשות ה-API שלהן.
חשוב לזכור:
- מגדירים את הפרמטר
includeTabsContentלערךtrueבשיטהdocuments.getכדי לאחזר את התוכן מכל הכרטיסיות במסמך. כברירת מחדל, לא מוחזר כל התוכן של הכרטיסיות. - מציינים את המזהים של הכרטיסיות שרוצים להחיל עליהן כל
Requestבשיטהdocuments.batchUpdate. כלRequestכולל דרך לציין את הכרטיסיות שבהן יחול העדכון. כברירת מחדל, אם לא מציינים כרטיסייה,Requestיחול ברוב המקרים על הכרטיסייה הראשונה במסמך. פרטים נוספים מופיעים במסמכי התיעוד שלRequest.