אם יש לכם אפליקציות קיימות שמבוססות על Google Sheets API v3, אתם יכולים לעבור ל-Google Sheets API v4. גרסה 4 מבוססת על JSON, יש לה ממשק קל יותר לשימוש והיא כוללת כמות משמעותית של פונקציונליות שלא קיימת בגרסה 3.
בדף הזה מופיע מיפוי בין הפקודות הישנות של Sheets API v3 לבין הפעולות המקבילות שלהן ב-Sheets API v4. המיפוי מתמקד בעיקר באוסף spreadsheets.values, שמספק פונקציונליות של קריאה וכתיבה ישירות לתאים. היבטים אחרים, כמו הוספת גיליונות או עדכון מאפייני גיליונות, מטופלים על ידי אוסף spreadsheets. שימו לב שמבני ה-JSON של API בגרסה 4 לא תואמים לאחור למבני ה-XML שנעשה בהם שימוש בגרסה 3.
מידע נוסף על המשאבים שזמינים ב-Sheets v4 API זמין בהפניית ה-API.
הערות ומונחים
ב-v3 API, הגיליונות בגיליון אלקטרוני מסוים נקראים 'גיליונות עבודה'. המונח הזה זהה למונח 'גיליונות' שמשמש ב-API בגרסה 4.
בממשקי ה-API, לעיתים קרובות צריך לציין מזהה של גיליון אלקטרוני שאתם עובדים איתו. בנוסף, לעיתים קרובות צריך לציין את המזהה של הגיליון האלקטרוני שרוצים לשנות. הערכים האלה מופיעים כחלק מכתובת ה-URL של נקודת הקצה ב-API, כפרמטרים של שאילתה או כחלק מגוף הבקשה. בדף הזה, ה-placeholder spreadsheetId מתייחס לגיליון האלקטרוני, וה-placeholder sheetId מתייחס למזהה הגיליון. כשמשתמשים בשיטות שמתוארות בדף הזה, צריך להזין את המזהים בפועל במיקומים האלה.
v3 API גם מקצה מזהה לשורות שאוחזרו באמצעות list feed שלו. המזהה הזה מיוצג בדף הזה על ידי placeholder rowId.
אישור בקשות
כשהאפליקציה פועלת, היא מבקשת מהמשתמשים להעניק לה הרשאות מסוימות. ההרשאות שהיא מבקשת נקבעות לפי ההיקפים שאתם מציינים באפליקציה.
v3 API
Sheets API v3 פועל עם היקף הרשאה יחיד:
https://spreadsheets.google.com/feeds
שהוא כינוי ל-
https://www.googleapis.com/auth/spreadsheets
אפשר להשתמש בכל אחד מהפורמטים של היקף ההרשאה.
v4 API
Sheets API v4 משתמש באחת או יותר מהקבוצות הבאות של היקפי הרשאות:
https://www.googleapis.com/auth/spreadsheets.readonly https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive
אם האפליקציה לא צריכה לבצע עריכות בגיליונות או במאפיינים של גיליונות של משתמשים, כדאי להשתמש בהיקפי הרשאות לקריאה בלבד. אם האפליקציה לא צריכה גישה כללית ל-Drive, כדאי להשתמש בהיקפי גישה לגיליונות אלקטרוניים במקום בהיקפי גישה ל-Drive.
חשיפה
בגרסאות ישנות יותר של ה-API, המונח visibility (חשיפה) מתייחס לזמינות של גיליון אלקטרוני מסוים.
v3 API
ב-Sheets API v3, הגדרות החשיפה מופיעות ישירות בנקודות הקצה (endpoint). גיליון אלקטרוני מסוג public
שפורסם באינטרנט אפשר לגשת ל-API בלי אימות, אבל גיליון אלקטרוני מסוג private
דורש אימות. החשיפה מצוינת בנקודת הקצה אחרי מזהה הגיליון האלקטרוני:
https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full
v4 API
ב-Sheets API v4 החדש, אין הצהרה מפורשת לגבי נראות. קריאות ל-API מתבצעות באמצעות מזהי גיליונות אלקטרוניים. אם לאפליקציה אין הרשאה לגשת לגיליון האלקטרוני שצוין, תוחזר שגיאה. אחרת, השיחה תתבצע.
היטל
המונח projection משמש ב-Sheets API v3 לציון קבוצת הנתונים שמוחזרת על ידי קריאה נתונה ל-API – כל הנתונים או קבוצת משנה קבועה שמוגדרת ב-API. Sheets API v4 לא משתמש בהקרנה, אלא מאפשר לכם יותר שליטה על הנתונים שמוחזרים.
v3 API
יש רק שתי הגדרות אפשריות של הקרנה ב-Sheets API v3. full
הפונקציה projection מחזירה את כל המידע הזמין, ואילו הפונקציה basic
מחזירה קבוצת משנה קטנה וקבועה של נתונים (עבור פידים של גליונות עבודה, רשימות ותאים).
בדומה לחשיפה, צריך לציין את ההקרנה בנקודת הקצה של ה-API (אחרי הגדרת החשיפה):
https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/public/basic
קבוצת המשנה הקטנה יותר של הנתונים שמוצגת על ידי basic
היא בעלת ערך
לשיפור היעילות של הקוד, אבל אי אפשר להתאים אותה אישית.
v4 API
Sheets API v4 יכול להחזיר מערך נתונים מלא, אבל הוא לא מגדיר קבוצות משנה קבועות כמו הגדרת הנראות basic
ב-Sheets API v3.
השיטות באוסף spreadsheet מגבילות את כמות הנתונים שהן מחזירות באמצעות פרמטר השאילתה fields.
לדוגמה, השאילתה הבאה מחזירה רק את הכותרות של כל הגיליונות בגיליון אלקטרוני מסוים:
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?fields=sheets.properties.title
יצירת גיליון אלקטרוני
v3 API
Sheets API v3 לא מספק אמצעי ליצירת גיליונות אלקטרוניים חדשים. במקום זאת, אפשר להשתמש במתודה Files.create של Drive API כדי ליצור קבצים חדשים של גיליונות אלקטרוניים. כדי לעשות את זה, האפליקציה צריכה להצהיר על ההיקף https://www.googleapis.com/auth/drive
.
v4 API
אפשר להשתמש גם ב-method Drive API Files.create עם Sheets API v4, אבל צריך להגדיר את ההרשאה https://www.googleapis.com/auth/drive
באפליקציה.
כחלופה שוות ערך, Sheets API v4 מספק שיטה של spreadsheets.create, שבאמצעותה אפשר גם להוסיף גיליונות, להגדיר את המאפיינים של הגיליון האלקטרוני והגיליון, ולהוסיף טווחים בעלי שם. לדוגמה, הפקודה הבאה יוצרת גיליון אלקטרוני חדש ונותנת לו את השם NewTitle:
POST https://sheets.googleapis.com/v4/spreadsheets
{ "properties": {"title": "NewTitle"} }
יצירת רשימה של גיליונות אלקטרוניים עבור המשתמש המאומת
v3 API
פיד Sheets API v3 מאפשר לאפליקציה לאחזר רשימה של כל הגיליונות האלקטרוניים שהמשתמש המאומת יכול לגשת אליהם. נקודת הקצה של פיד הגיליון האלקטרוני היא:
GET https://spreadsheets.google.com/feeds/spreadsheets/private/full
v4 API
Sheets API v4 לא מספק את הפעולה הספציפית הזו. מומלץ להעביר את האפליקציה לשימוש בהיקף drive.file בשילוב עם הכלי לבחירת קבצים של Google לבחירת גיליון אלקטרוני.
במקרים שבהם נדרשת רשימה של גיליונות אלקטרוניים, אפשר לשכפל אותה באמצעות המתודה Drive API Files.list, עם שאילתה mimeType
:
GET https://www.googleapis.com/drive/v3/files ?q=mimeType='application/vnd.google-apps.spreadsheet'
כדי להשתמש במתודה files.list של Drive API כדי ליצור רשימה של כל הגיליונות האלקטרוניים של משתמש, צריך להשתמש בהיקף מוגבל.
אחזור מטא-נתונים של גיליון
Sheets API v3 מספק פיד לגישה למטא-נתונים של הגיליון שנמצאים בגיליון אלקטרוני נתון (הגישה לנתוני השורות והתאים מתבצעת דרך פיד נפרד). המטא-נתונים כוללים מידע כמו שמות הגיליונות וגודל הגיליונות.
השיטה spreadsheets.get של Sheets API v4 מספקת גישה למידע הזה ועוד.
v3 API
אפשר לגשת לפיד של גליון העבודה מנקודת הקצה הזו של ה-API (באמצעות כותרת הרשאה מתאימה):
GET https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full
התשובה לבקשה הזו כוללת מבנה שדומה לזה, כאשר הנתונים של כל גיליון נמצאים ב-<entry>
נפרד:
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
xmlns:gs="http://schemas.google.com/spreadsheets/2006"
xmlns:gd="http://schemas.google.com/g/2005"
gd:etag='W/"D0cERnk-eip7ImA9WBBXGEg."'>
<id>https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full</id>
<updated>2006-11-17T18:23:45.173Z</updated>
<title type="text">Groceries R Us</title>
<link rel="alternate" type="text/html"
href="https://spreadsheets.google.com/ccc?key=spreadsheetId"/>
<link rel="http://schemas.google.com/g/2005#feed"
type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full"/>
<author>
<name>Fitzwilliam Darcy</name>
<email>fitz@example.com</email>
</author>
<openSearch:totalResults>1</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>1</openSearch:itemsPerPage>
<entry gd:etag='"YDwqeyI."'>
<id>https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId</id>
<updated>2006-11-17T18:23:45.173Z</updated>
<title type="text">Sheet1</title>
<content type="text">Sheet1</content>
<link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full"/>
<link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version"/>
<gs:rowCount>100</gs:rowCount>
<gs:colCount>20</gs:colCount>
</entry>
</feed>
v4 API
אפשר להשתמש במתודה spreadsheets.get כדי לקבל מאפיינים של גיליונות אלקטרוניים ומטא-נתונים אחרים – הרבה יותר ממה שאפשר לקבל באמצעות Sheets API v3. אם רוצים לקרוא רק את מאפייני הגיליון, צריך להגדיר את פרמטר השאילתה includeGridData
לערך false
כדי למנוע את הכללת נתוני התאים בגיליון האלקטרוני:
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId?includeGridData=false
תגובת Spreadsheet
מכילה מערך של אובייקטים Sheet
. אפשר למצוא את שמות הגיליונות ופרטי הגודל באופן ספציפי ברכיב SheetProperties
של האובייקטים האלה. לדוגמה:
{ "spreadsheetId": spreadsheetId, "sheets": [ {"properties": { "sheetId": sheetId, "title": "Sheet1", "index": 0, "gridProperties": { "rowCount": 100, "columnCount": 20, "frozenRowCount": 1, "frozenColumnCount": 0, "hideGridlines": false }, ... }, ... }, ... ], ... }
הוספת גיליון לגיליון אלקטרוני
בשני ממשקי ה-API אפשר להוסיף גיליונות חדשים לגיליון אלקטרוני קיים.
v3 API
Sheets API v3 יכול להוסיף גיליונות עבודה חדשים לגיליון אלקטרוני על ידי שליחת הבקשה הבאה (מאומתת) POST
. אפשר לציין את הגודל של הגיליון החדש:
POST https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:gs="http://schemas.google.com/spreadsheets/2006">
<title>Expenses</title>
<gs:rowCount>50</gs:rowCount>
<gs:colCount>10</gs:colCount>
</entry>
v4 API
אפשר להוסיף גיליונות חדשים על ידי שליחת בקשת AddSheet בשיטה spreadsheets.batchUpdate. כחלק מגוף הבקשה, אפשר לציין את מאפייני הגיליון של הגיליון החדש. כל המאפיינים הם אופציונליים. אסור לספק שם שמשמש גיליון קיים.
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{ "requests": [{ "addSheet": { "properties": { "title": "Expenses", "sheetType": "GRID", "gridProperties": { "rowCount": 50, "columnCount": 10 } } } }], }
שינוי הכותרת והגודל של גיליון
Sheets API v3 מאפשר לעדכן את הכותרות והגודל של הגיליונות.Sheets API v4 מאפשר לעשות את זה גם כן, אבל אפשר להשתמש בו גם כדי לעדכן מאפיינים אחרים של הגיליונות. שימו לב: אם תקטינו את הגודל של גיליון, יכול להיות שהנתונים בתאים שנחתכו יימחקו ללא אזהרה.
v3 API
כדי לשנות את השם או הגודל של גליון עבודה, מתחילים באחזור של פיד גליון העבודה ומחפשים את רשומת גליון העבודה הרצויה, שמכילה כתובת URL של edit
.
מעדכנים את המטא-נתונים של הגיליון האלקטרוני ושולחים אותם כגוף של בקשת PUT
לכתובת ה-URL של העריכה. לדוגמה:
PUT https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version
<entry>
<id>
https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId
</id>
<updated>2007-07-30T18:51:30.666Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#worksheet"/>
<title type="text">Expenses</title>
<content type="text">Expenses</content>
<link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full"/>
<link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full"/>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version"/>
<gs:rowCount>45</gs:rowCount>
<gs:colCount>15</gs:colCount>
</entry>
v4 API
כדי לעדכן את הגודל, השם ומאפיינים אחרים של הגיליון, צריך לשלוח בקשת updateSheetProperties בשיטה spreadsheets.batchUpdate. גוף הבקשה POST
צריך להכיל את המאפיינים שרוצים לשנות, ובפרמטר fields
צריך לציין במפורש את המאפיינים האלה (אם רוצים לעדכן את כל המאפיינים, אפשר להשתמש ב-fields:"*"
כקיצור במקום לפרט את כולם). לדוגמה, הפקודה הבאה מציינת שצריך לעדכן את המאפיינים של כותרת הגיליון והגודל של הגיליון עם המזהה הנתון:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{ "requests": [ { "updateSheetProperties": { "properties": { "sheetId": sheetId, "title": "Expenses", "gridProperties": { "rowCount": 45, "columnCount": 15, } }, "fields": "title,gridProperties(rowCount,columnCount)" } } ], }
כדי לאחזר את sheetId של גיליון, משתמשים ב-method spreadsheets.get של הגיליון האלקטרוני.
מחיקת גיליון
אפשר להשתמש בכל אחד מהממשקי API כדי להסיר גיליונות מגיליון אלקטרוני נתון.
v3 API
כדי למחוק גיליון עבודה, קודם צריך לאחזר את פיד גיליון העבודה, ואז לשלוח בקשת DELETE
בכתובת ה-URL של רשומת גיליון העבודה הרלוונטי.edit
DELETE https://spreadsheets.google.com/feeds/worksheets/spreadsheetId/private/full/sheetId/version
v4 API
כדי למחוק גיליון, שולחים בקשת DeleteSheet בשיטה spreadsheets.batchUpdate. גוף הבקשה POST
צריך להכיל רק את sheetId של הגיליון שרוצים למחוק. לדוגמה:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{ "requests": [ { "deleteSheet": { "sheetId": sheetId } } ], }
כדי לאחזר את sheetId של גיליון ספציפי, משתמשים בשיטה spreadsheets.get של הגיליון האלקטרוני.
אחזור נתוני שורה
פיד השורות הוא אחת משתי השיטות ש-Sheets API v3 מספק לגישה לנתונים בתאים של גיליון אלקטרוני (השיטה השנייה היא פיד התאים). הפיד של השורות נועד לתמוך בפעולות נפוצות בגיליון אלקטרוני (קריאת שורה אחר שורה, הוספת שורות, מיון), אבל הוא מבוסס על הנחות מסוימות שלא מתאימות לחלק מהמשימות. בפרט, פיד הרשימה מניח ששורות ריקות הן סיום של הפיד, ושכותרות חובה מופיעות בשורה הראשונה של גיליון.
לעומת זאת, Sheets API v4 לא משתמש בשיטות גישה שספציפיות לשורה. במקום זאת, כדי לגשת לנתונים בתא של גיליון אלקטרוני, צריך להשתמש בסימון A1 כדי להפנות לטווחים הספציפיים שנדרשים. הטווחים יכולים להיות בלוקים של תאים, שורות שלמות, עמודות שלמות או גיליונות שלמים. ה-API יכול גם לגשת לקבוצות לא רציפות של תאים.
v3 API
כדי לקבוע את כתובת ה-URL של פיד מבוסס-רשימה עבור גיליון עבודה נתון, מאחזרים את פיד גיליון העבודה ומחפשים את כתובת ה-URL של פיד הרשימה ברשומה של גיליון העבודה הרלוונטי.
כדי לאחזר פיד מבוסס-רשימה, שולחים בקשת GET
לכתובת ה-URL של פיד הרשימה, באמצעות כותרת הרשאה מתאימה. לדוגמה:
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
התשובה לבקשה הזו מכילה, בין היתר, רשומות שמתאימות לשורות ספציפיות. ההפניה לתאים בודדים מתבצעת באמצעות השמות שמופיעים בשורת הכותרת של הגיליון (חובה). לדוגמה, הנה שורה אחת:
<entry gd:etag='"S0wCTlpIIip7ImA0X0QI"'>
<id>rowId</id>
<updated>2006-11-17T18:23:45.173Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#list"/>
<title type="text">Bingley</title>
<content type="text">Hours: 10, Items: 2, IPM: 0.0033</content>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version"/>
<gsx:name>Bingley</gsx:name>
<gsx:hours>10</gsx:hours>
<gsx:items>2</gsx:items>
<gsx:ipm>0.0033</gsx:ipm>
</entry>
כברירת מחדל, השורות שמוחזרות בפיד הרשימה מוחזרות לפי סדר השורות. Sheets API v3 מספק פרמטרים של שאילתה כדי לשנות את הסדר הזה.
סדר הפוך:
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full?reverse=true
כדי למיין לפי עמודה ספציפית:
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full ?orderby=column:lastname
Sheets API v3 מאפשר גם סינון של שורות ספציפיות באמצעות שאילתה מובנית (שמפנה לכותרות של עמודות):
GET https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full ?sq=age>25%20and%20height<175
v4 API
באמצעות Sheets API v4, אפשר לאחזר שורות לפי טווח באמצעות המתודות spreadsheets.values.get או spreadsheets.values.batchGet. לדוגמה, הפונקציה הבאה מחזירה את כל השורות בגיליון Sheet1:
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1
התגובה לבקשה הזו כוללת מבנה שדומה לזה:
{ "range": "Sheet1", "majorDimension": "ROWS", "values": [["Name", "Hours", "Items", "IPM"], ["Bingley", "10", "2", "0.0033"], ["Darcy", "14", "6", "0.0071"]] }
כשמאחזרים שורות, עמודות או גיליונות שלמים, תאים ריקים בסוף לא נכללים בתשובה.
ל-Sheets API v4 אין מקבילות לפרמטרים של שאילתת סדר השורות שסופקו על ידי Sheets API v3. היפוך הסדר הוא פשוט: מעבדים את המערך values
המוחזר בסדר הפוך. האפשרות 'סדר לפי עמודה' לא נתמכת בפעולות קריאה, אבל אפשר למיין את הנתונים בגיליון (באמצעות בקשת SortRange) ואז לקרוא אותם.
ל-Sheets API v4 אין כרגע מקבילה ישירה לשאילתות המובנות של Sheets API v3. אבל אפשר לאחזר את הנתונים הרלוונטיים ולמיין אותם לפי הצורך באפליקציה.
הוספת שורה חדשה של נתונים
אפשר להוסיף שורה חדשה של נתונים לגיליון באמצעות כל אחד מהממשקי API.
v3 API
כדי לקבוע את כתובת ה-URL של פיד מבוסס-רשימה עבור גיליון עבודה נתון, מאחזרים את פיד גיליון העבודה ומחפשים את כתובת ה-URL של הפוסט ברשומה של גיליון העבודה הרלוונטי.
כדי להוסיף שורת נתונים, שולחים בקשת POST
לכתובת ה-URL של הפוסט, באמצעות כותרת הרשאה מתאימה. לדוגמה:
POST https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full
גוף הבקשה POST
צריך להכיל רשומה של נתוני השורה שרוצים להוסיף, עם הפניות לתאים נפרדים לפי כותרות העמודות:
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">
<gsx:hours>2</gsx:hours>
<gsx:ipm>0.5</gsx:ipm>
<gsx:items>60</gsx:items>
<gsx:name>Elizabeth</gsx:name>
</entry>
שורות חדשות מתווספות לסוף הגיליון שצוין.
v4 API
בעזרת Sheets API v4, אפשר להוסיף שורות באמצעות המתודה spreadsheets.values.append. בדוגמה הבאה מוצג קוד שכותב שורה חדשה של נתונים מתחת לטבלה האחרונה בגיליון האלקטרוני Sheet1.
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/append/Sheet1
{ "values": [["Elizabeth", "2", "0.5", "60"]] }
בנוסף, Sheets API v4 מאפשר גם להוסיף תאים עם מאפיינים ועיצוב ספציפיים באמצעות בקשות AppendCells ב-spreadsheets.batchUpdate.
עריכת שורה עם נתונים חדשים
שני ממשקי ה-API מאפשרים לעדכן את נתוני השורות בערכים חדשים.
v3 API
כדי לערוך שורה של נתונים, בודקים את פיד הרשימה כדי לאתר את הרשומה של השורה שרוצים לעדכן. מעדכנים את התוכן של הרשומה לפי הצורך. חשוב לוודא שערך המזהה ברשומה שבה אתם משתמשים זהה בדיוק למזהה של הרשומה הקיימת.
אחרי שמעדכנים את הרשומה, שולחים בקשת PUT
עם הרשומה כגוף הבקשה לכתובת ה-URL edit
שמופיעה באותה שורה, באמצעות כותרת הרשאה מתאימה. לדוגמה:
PUT https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version
<entry gd:etag='"S0wCTlpIIip7ImA0X0QI"'>
<id>rowId</id>
<updated>2006-11-17T18:23:45.173Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#list"/>
<title type="text">Bingley</title>
<content type="text">Hours: 10, Items: 2, IPM: 0.0033</content>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version"/>
<gsx:name>Bingley</gsx:name>
<gsx:hours>20</gsx:hours>
<gsx:items>4</gsx:items>
<gsx:ipm>0.0033</gsx:ipm>
</entry>
v4 API
בעזרת Sheets API v4, אפשר לערוך שורה באמצעות הסימון A1 של השורה שרוצים לערוך, ולשלוח בקשת spreadsheets.values.update כדי להחליף את השורה. הטווח שצוין צריך להתייחס רק לתא הראשון בשורה. ממשק ה-API מסיק אילו תאים לעדכן על סמך הערכים שסופקו עם הבקשה. אם מציינים טווח של כמה תאים, הערכים שסיפקתם צריכים להתאים לטווח הזה. אם לא, ה-API מחזיר שגיאה.
בדוגמה הבאה של בקשה וגוף הבקשה, מוסיפים נתונים לשורה הרביעית של Sheet1:
PUT https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!A4
{ "values": [["Elizabeth", "2", "0.5", "60"]] }
אפשר גם לעדכן נתונים בשורות באמצעות השיטה spreadsheet.values.batchUpdate. השיטה הזו יעילה יותר אם מבצעים כמה עדכונים בשורות או בתאים.
בנוסף, Sheets API v4 מאפשר גם לערוך את מאפייני התאים ואת העיצוב שלהם באמצעות הבקשות UpdateCells או RepeatCell ב-spreadsheets.batchUpdate.
מחיקת שורה
שני ממשקי ה-API תומכים במחיקת שורות. שורה שנמחקה מוסרת מהגיליון האלקטרוני, והשורות שמתחתיה מוזזות למעלה בשורה אחת.
v3 API
כדי למחוק שורה, קודם מאחזרים את השורה למחיקה מפיד הרשימה, ואז שולחים בקשת DELETE
לכתובת ה-URL edit
שמופיעה ברשומה של השורה.
זו אותה כתובת URL שמשמשת לעדכון השורה.
DELETE https://spreadsheets.google.com/feeds/list/spreadsheetId/sheetId/private/full/rowId/version
אם רוצים לוודא שלא מוחקים שורה ששונתה על ידי לקוח אחר מאז שאוחזרה, צריך לכלול כותרת HTTP If-Match שמכילה את ערך ה-ETag המקורי של השורה. כדי לקבוע את ערך ה-ETag של השורה המקורית, בודקים את מאפיין gd:etag של רכיב הרשומה.
אם רוצים למחוק את השורה בלי קשר לשאלה אם מישהו אחר עדכן אותה מאז שאחזרתם אותה, צריך להשתמש ב-If-Match: * ולא לכלול את ה-ETag. (במקרה כזה, לא צריך לאחזר את השורה לפני שמוחקים אותה).
v4 API
מחיקת שורות באמצעות Sheets API v4 מתבצעת על ידי קריאה ל-method spreadsheet.batchUpdate באמצעות בקשת DeleteDimension. אפשר להשתמש בבקשה הזו גם כדי להסיר עמודות, והמפתחים יכולים לבחור להסיר רק חלק משורה או מעמודה. לדוגמה, הפקודה הבאה מסירה את השורה השישית בגיליון עם המזהה הנתון (האינדקסים של השורות מבוססים על אפס, כולל startIndex ולא כולל endIndex):
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
{ "requests": [ { "deleteDimension": { "range": { "sheetId": sheetId, "dimension": "ROWS", "startIndex": 5, "endIndex": 6 } } } ], }
אפשר לאחזר את sheetId של גיליון באמצעות ה-method spreadsheet.get.
אחזור נתונים של תאים
Sheets API v3 מספק פיד של תאים לגישה בסיסית לכל הנתונים שמאוחסנים בגיליון אלקטרוני. לגישת קריאה, פיד התאים יכול לספק את כל התוכן של הגיליון או טווח של תאים בגיליון שהוגדר על ידי קבוצה של פרמטרים של שאילתה, אבל רק כבלוק יחיד – צריך לאחזר טווחים לא סמוכים בנפרד באמצעות בקשות נוספות של GET
.
Sheets API v4 יכול לאחזר כל קבוצה של נתוני תאים מגיליון (כולל כמה טווחים לא רציפים). Sheets API v3 יכול להחזיר רק את התוכן של התאים כערכי קלט (כמו ערכים שמשתמש מקליד במקלדת) או את הפלט של נוסחה (אם הוא מספרי). לעומת זאת, Sheets API v4 מעניק גישה מלאה לערכים, לנוסחאות, לעיצוב, להיפר-קישורים, לאימות נתונים ולמאפיינים אחרים.
v3 API
כדי לקבוע את כתובת ה-URL של פיד מבוסס-תאים עבור גיליון עבודה נתון, בודקים את פיד גיליון העבודה ומחפשים את כתובת ה-URL של פיד התאים ברשומה של גיליון העבודה הרלוונטי.
כדי לאחזר פיד שמבוסס על תאים, שולחים בקשת GET
לכתובת ה-URL של פיד התאים, באמצעות כותרת הרשאה מתאימה. לדוגמה:
GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full
ההפניה לתאים מתבצעת באמצעות מספר השורה ומספר העמודה. כדי לאחזר טווח ספציפי אחד, אפשר להשתמש בפרמטרים של השאילתה max-row
, min-row
, max-col
ו-min-col
. לדוגמה, הפקודה הבאה מאחזרת את כל התאים בעמודה 4 (D), החל משורה 2:
GET https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full ?min-row=2&min-col=4&max-col=4
Sheets API v3 מחזיר את הערך inputValue
של התאים שאוחזרו – הערך שמשתמש יקליד בממשק המשתמש של Google Sheets כדי לשנות את התא. הערך inputValue
יכול להיות ערך מילולי או נוסחה. לפעמים ה-API מחזיר גם numericValue
, למשל,
כשנוסחה מחזירה מספר. לדוגמה, תשובה יכולה לכלול רשומות של תאים
במבנה שדומה לזה:
<entry gd:etag='"ImB5CBYSRCp7"'>
<id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4</id>
<updated>2006-11-17T18:27:32.543Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#cell"/>
<title type="text">D4</title>
<content type="text">5</content>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R9C4/srevc"/>
<gs:cell row="4" col="4" inputValue="=FLOOR(C4/(B4*60),.0001)"
numericValue="5.0">5</gs:cell>
</entry>
v4 API
כדי לאחזר נתונים מתאים, צריך לקרוא לשיטה spreadsheets.values.get או לשיטה spreadsheets.values.batchGet עבור הטווח או הטווחים הרלוונטיים, בהתאמה. לדוגמה, הפונקציה הבאה מחזירה את התאים בעמודה D של Sheet2, החל משורה 2, בסדר עמודות, ומחזירה את הנוסחאות כפי שהוזנו (תאים ריקים בסוף מושמטים):
GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet2!D2:D?majorDimension=COLUMNS&valueRenderOption=FORMULA
התגובה לבקשה הזו דומה במבנה שלה לתגובה הבאה:
{ "spreadsheetId": spreadsheetId, "valueRanges": [ {"range": "Sheet2!D2:D", "majorDimension": "COLUMNS", "values": [["Widget", 234, "=FLOOR(C4/(B4*60),.0001)", "=D4\*1000"]] }] }
יעיל יותר להשתמש ב-spreadsheet.values.batchGet אם רוצים לאחזר כמה טווחים של נתוני תאים. אם רוצים לגשת למאפייני תאים כמו עיצוב, צריך להשתמש בשיטה spreadsheet.get.
עריכת תא
Sheets API v3 מאפשר לערוך את התוכן של תא על ידי שליחת פקודה PUT
לפיד התאים עם רשומת התא ששונתה כגוף הבקשה.
לעומת זאת, Sheets API v4 מספק את השיטות spreadsheets.values.update ו-spreadsheets.values.batchUpdate לשינוי התוכן של תאים.
v3 API
כדי לערוך את התוכן של תא מסוים, קודם צריך למצוא את הרשומה של התא בפיד התאים.
הערך מכיל כתובת URL לעריכה. מעדכנים את הרשומה כך שתשקף את התוכן שרוצים שיופיע בתא, ואז שולחים בקשת PUT
לכתובת ה-URL של העריכה עם רשומת התא המעודכנת כגוף הבקשה. לדוגמה, הקוד הבא מעדכן את התא D2 (R2C4) כך שיכיל נוסחה SUM
:
PUT https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full//R2C4/srevc<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gs="http://schemas.google.com/spreadsheets/2006"> <id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4</id> <link rel="edit" type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4"/> <gs:cell row="2" col="4" inputValue="=SUM(A1:B6)"/> </entry>
v4 API
אפשר לערוך תא בודד ב-Sheets API v4 באמצעות המתודה spreadsheets.values.update. בשיטה הזו נדרש פרמטר השאילתה ValueInputOption
, שמציין אם נתוני הקלט מטופלים כאילו הוזנו בממשק המשתמש של Sheets (USER_ENTERED
), או שלא מתבצע ניתוח שלהם והם נלקחים כמו שהם (RAW
). לדוגמה, הפעולה הבאה מעדכנת את התא D2 בנוסחה:
PUT https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/D2?valueInputOption=USER_ENTERED
{"values": [["=SUM(A1:B6)"]]}
אם אתם מבצעים כמה עריכות של תאים, כדאי להשתמש בשיטה spreadsheets.values.batchUpdate כדי להנפיק אותן בבקשה אחת.
עריכה של כמה תאים באמצעות בקשה לאצווה
שני ממשקי ה-API מאפשרים לבצע שינויים בתוכן של כמה תאים באמצעות בקשה אחת (באצווה). התאים שאליהם מתייחסת בקשה לאצווה לא צריכים להיות בטווח רציף.
אם אחת או יותר מהעריכות של התאים בחבילה נכשלות, Sheets API v3 מאפשר לאחרות להצליח. עם זאת, Sheets API v4 מחזיר שגיאה אם אחד מהעדכונים באצווה נכשל, ולא מחיל אף אחד מהם במקרה כזה.
v3 API
כדי לערוך כמה תאים, קודם צריך לאחזר פיד תאים של גליון העבודה. הערך מכיל כתובת URL של קובץ אצווה. שולחים POST
בקשה לכתובת ה-URL הזו, עם גוף בקשה שמתאר את התאים שרוצים
לעדכן ואת התוכן החדש של התאים. המבנה של הבקשה POST
וגוף הבקשה דומה למבנה הבא:
POST https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/batch
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:batch="http://schemas.google.com/gdata/batch"
xmlns:gs="http://schemas.google.com/spreadsheets/2006">
<id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full</id>
<entry>
<batch:id>request1</batch:id>
<batch:operation type="update"/>
<id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4</id>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C4/version"/>
<gs:cell row="2" col="4" inputValue="newData"/>
</entry>
...
<entry>
<batch:id>request2</batch:id>
<batch:operation type="update"/>
<id>https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5</id>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/cells/spreadsheetId/sheetId/private/full/R2C5/version"/>
<gs:cell row="5" col="2" inputValue="moreInfo"/>
</entry>
</feed>
השדה batch:id
צריך לזהות באופן ייחודי את הבקשה בתוך האצווה.
השדה batch:operation
צריך להיות update
לעריכות של תאים. gs:cell
מזהה את התא לפי מספר השורה והעמודה ומספק את הנתונים החדשים להוספה לתא. id
מכיל את כתובת ה-URL המלאה של התא שרוצים לעדכן.
לתג link
צריך להיות מאפיין href
שמכיל את הנתיב המלא למזהה התא. כל השדות האלה הם שדות חובה לכל רשומה.
v4 API
Sheets API v4 מספק עריכה של ערכי תאים בקבוצות באמצעות השיטה spreadsheets.values.batchUpdate.
כדי לערוך כמה תאים, שולחים בקשת POST
עם שינויי הנתונים שצוינו בגוף הבקשה. לדוגמה:
POST https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values:batchUpdate
{ "valueInputOption": "USER_ENTERED" "data": [ {"range": "D4", "majorDimension": "ROWS", "values": [["newData"]] }, {"range": "B5", "majorDimension": "ROWS", "values": [["moreInfo"]] } ] }
אם ציינתם תא יחיד כטווח, כל הערכים שסיפקתם ייכתבו בגיליון החל מהתא הזה כקואורדינטה הימנית העליונה. אם במקום זאת מציינים טווח של כמה תאים, הערכים שאתם מספקים צריכים להתאים בדיוק לטווח הזה. אם לא, ה-API מחזיר שגיאה.