מגבלות שימוש

ממשק Google Sheets API הוא שירות משותף, ולכן אנחנו מחילים מכסות ומגבלות כדי להבטיח שכל המשתמשים ישתמשו בו באופן הוגן וכדי לשמור על התקינות הכוללת של מערכת Google Workspace.

מגבלות המכסה

ל-Sheets API אין מגבלות גודל קשיחות עבור בקשת API, אבל משתמשים עשויים להיתקל במגבלות מרכיבי עיבוד שונים שאינם בשליטתו של Sheets. כדי לזרז את הטיפול בבקשות, Google ממליצה על מטען ייעודי (payload) מקסימלי של 2MB.

ל-Sheets API יש מכסות לדקה ומילוי מחדש בכל דקה. למשל, קיימת מגבלה של 300 בקשות קריאה לדקה לכל פרויקט. אם האפליקציה שלכם שולחת 350 בקשות תוך דקה, 50 הבקשות הנוספות חורגות מהמכסה ויוצרות תגובת קוד מצב 429: Too many requests של HTTP. במקרה כזה, כדאי להשתמש באלגוריתם מעריך של השהיה. לאחר דקה תהיה לך אפשרות לבצע שוב בקשות. משתמשים יכולים להגיש בקשות מרובות בו-זמנית, כל עוד הם כלולים במכסת המכסה.

כל הבקשות ב-Sheets מוחלות באופן אוטומטי. כלומר, אם בקשה כלשהי לא תקפה, העדכון כולו נכשל ושום שינוי (שיכול להיות תלוי) לא ייושם.

בטבלה הבאה מפורטות מגבלות הבקשות. בתנאי שלא תחרגו מהמכסות לדקה, לא תהיה הגבלה על מספר הבקשות שאפשר לשלוח ביום.

מכסות
בקשות קריאה
לדקה לכל פרויקט 300
לדקה לכל משתמש בפרויקט 60
בקשות כתיבה
לדקה לכל פרויקט 300
לדקה לכל משתמש בפרויקט 60

כאן אפשר לקרוא מידע נוסף על מגבלות הקבצים ב-Google Drive.

פתרון שגיאות הקשורות למכסה מבוססת-זמן

בכל השגיאות המבוססות על זמן (עד N בקשות לכל X דקות), אנחנו ממליצים שהקוד יתפס את החריג וייעשה שימוש בהשהיה מעריכית קטועה כדי לוודא שהמכשירים שלך לא מייצרים עומס יתר.

השהיה מעריכית היא אסטרטגיה סטנדרטית לטיפול בשגיאות באפליקציות רשת. אלגוריתם השהיה מעריכית מנסה שוב את הבקשות תוך שימוש בהארכת זמני ההמתנה בין בקשות, עד לזמן השהיה מקסימלי. אם הבקשות עדיין לא מוצלחות, חשוב שהעיכוב בין הבקשות יגדל עם הזמן עד שהבקשה תטופל.

אלגוריתם לדוגמה

אלגוריתם מעריכי של ניסיון השהיה מנסה שוב באופן מעריכי, ומאריך את זמן ההמתנה בין ניסיונות חוזרים עד לזמן השהיה מקסימלי. למשל:

  1. שולחים בקשה לממשק Google Sheets API.
  2. אם הבקשה נכשלה, יש להמתין 1+random_number_milliseconds ולנסות שוב את הבקשה.
  3. אם הבקשה נכשלה, יש להמתין 2 + random_number_milliseconds ולנסות שוב.
  4. אם הבקשה נכשלה, יש להמתין 4 + random_number_milliseconds ולנסות שוב.
  5. וכך הלאה, עד פעם אחת (maximum_backoff).
  6. מומלץ להמתין ולנסות שוב עד מספר ניסיונות חוזרים, אבל לא להאריך את תקופת ההמתנה בין הניסיונות החוזרים.

כאשר:

  • זמן ההמתנה הוא min(((2^n)+random_number_milliseconds), maximum_backoff), עם n עלייה של 1 לכל חזרה (בקשה).
  • random_number_milliseconds הוא מספר אקראי באלפיות השנייה שקטן מ-1,000 או שווה לו. כך ניתן למנוע מקרים שבהם לקוחות רבים מסונכרנים במצב כלשהו, וכולם מנסים בבת אחת לשלוח בקשות בגלים מסונכרנים. הערך של random_number_milliseconds מחושב מחדש אחרי כל בקשה חוזרת.
  • maximum_backoff הוא בדרך כלל 32 או 64 שניות. הערך המתאים תלוי בתרחיש לדוגמה.

הלקוח יכול להמשיך לנסות שוב לאחר שעבר את maximum_backoff. ניסיונות חוזרים אחרי התקופה הזו לא צריכים להאריך את זמן ההשהייה. לדוגמה, אם לקוח משתמש ב-maximum_backoff במשך 64 שניות, לאחר מכן הוא יכול לנסות כל 64 שניות. בשלב מסוים, צריך למנוע מלקוחות לבצע ניסיון חוזר ללא הגבלת זמן.

זמן ההמתנה בין הניסיונות החוזרים ומספר הניסיונות החוזרים תלוי בתרחיש לדוגמה ובתנאי הרשת שלכם.

תמחור

כל השימוש ב-Google Sheets API זמין ללא עלות נוספת. חריגה ממכסות המכסה לא כרוכה בחיובים נוספים, והחשבון שלך לא מחויב.

שליחת בקשה להגדלת המכסה

בהתאם לשימוש במשאבים של הפרויקט, יכול להיות שתרצו לבקש הגדלת מכסה. קריאות ל-API באמצעות חשבון שירות נחשבות כשימוש בחשבון יחיד. הגשת בקשה למכסה מוגדלת לא מבטיחה אישור. אישור העלאה של מכסות גדולות עשוי להימשך זמן רב יותר.

לא לכל הפרויקטים יש אותן מכסות. ככל שתשתמשו יותר ויותר ב-Google Cloud במשך הזמן, יכול להיות שתצטרכו להגדיל את המכסות שלכם. אם אתם מצפים לראות עלייה משמעותית בשימוש, תוכלו לבקש התאמות מכסות באופן יזום דרך דף Quotas במסוף Google Cloud.

מידע נוסף זמין במשאבים הבאים: