באמצעות Google Sheets API אפשר לכתוב ערכים ונוסחאות בתאים, בטווחים, בקבוצות של טווחים ובטבלאות שלמות. בדוגמאות שבדף הזה מוסבר איך לבצע פעולות כתיבה נפוצות באמצעות המשאב spreadsheets.values
של Sheets API.
שימו לב שאפשר גם לכתוב ערכים של תאים באמצעות השיטה spreadsheet.batchUpdate
. השיטה הזו יכולה להיות שימושית אם רוצים לעדכן בו-זמנית את הפורמט של התאים או מאפיינים אחרים שהמשאב spreadsheets.values
לא משפיע עליהם. לדוגמה, אם רוצים להעתיק טווח תאים מגיליון אחד לגיליון אחר תוך החלפת הנוסחה והעיצוב של התאים, אפשר להשתמש ב-method UpdateCellsRequest
עם spreadsheet.batchUpdate
.
עם זאת, לכתיבה של ערכים פשוטים קל יותר להשתמש ב-method spreadsheets.values.update
או ב-method spreadsheets.values.batchUpdate
.
הדוגמאות האלה מוצגות כבקשות HTTP כדי שיהיו ניטרליות מבחינת שפה. במאמר קריאה וכתיבה של ערכים של תאים מוסבר איך מטמיעים פעולות כתיבה בשפות שונות באמצעות ספריות הלקוח של Google API.
בדוגמאות האלה, placeholder SPREADSHEET_ID
מציין את המיקום שבו צריך לציין את המזהה של הגיליון האלקטרוני, שאפשר למצוא בכתובת ה-URL של הגיליון האלקטרוני. מציינים את התחומים לכתיבה באמצעות סימון A1. טווח לדוגמה הוא Sheet1!A1:D5.
כתיבת טווח יחיד
בדוגמת הקוד הבאה spreadsheets.values.update
מוסבר איך לכתוב את הערכים בטווח, כשמתחילים בגיליון אלקטרוני חדש ריק. פרמטר השאילתה ValueInputOption
נדרש והוא קובע אם הערכים שנכתבים יינתחו (לדוגמה, אם מחרוזת תוסב לתאריך או לא).
גוף הבקשה הוא אובייקט ValueRange
שמתאר את ערכי הטווח שרוצים לכתוב. השדה majorDimension
מציין שהמערכים הם רשימות של ערכים שמאורגנות לפי שורות. הערכים הקיימים בטווח היעד יוחלפו.
פרוטוקול הבקשה מוצג בהמשך.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:D5", "majorDimension": "ROWS", "values": [ ["Item", "Cost", "Stocked", "Ship Date"], ["Wheel", "$20.50", "4", "3/1/2016"], ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"] ], }
התשובה מורכבת מאובייקט UpdateValuesResponse
, למשל:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:D5",
"updatedRows": 5,
"updatedColumns": 4,
"updatedCells": 20,
}
הגיליון שנוצר ייראה כך:
A | B | C | D | |
1 | פריט | עלות | מלאי | תאריך משלוח |
2 | גלגל ענק | 20.50$ | 4 | 1.3.2016 |
3 | דלת | 60 ש"ח | 2 | 15/03/2016 |
4 | מנוע | 400 ש"ח | 1 | 20/03/2016 |
5 | סה"כ | 135.5$ | 7 | 20/03/2016 |
כתיבה סלקטיבית בטווח
כשכותבים ערכים לטווח, אפשר להגדיר את רכיבי המערך התואמים ל-null
כדי למנוע שינוי של חלק מהתאים הקיימים. אפשר גם לנקות תא על ידי כתיבת מחרוזת ריקה (""
) בו.
בדף שמכיל את אותם נתונים שנוצרו בדוגמה שלמעלה, דוגמת הקוד הבאה spreadsheets.values.update
מראה איך לכתוב את הערכים בטווח B1:D4, תוך שמירה על סטטוס התאים הרצוי (שינויים מסוימים יישארו ללא שינוי, אחרים יימחקו). פרמטר השאילתה ValueInputOption
נדרש והוא קובע אם הערכים שנכתבים יינתחו (לדוגמה, אם מחרוזת תוסב לתאריך או לא).
גוף הבקשה הוא אובייקט ValueRange
שמתאר את ערכי הטווח שרוצים לכתוב. השדה majorDimension
מציין שהמערכים הם רשימות של ערכים שמאורגנים לפי עמודה.
פרוטוקול הבקשה מוצג בהמשך.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!B1", "majorDimension": "COLUMNS", "values": [ [null,"$1","$2", ""], [], [null,"4/1/2016", "4/15/2016", ""] ] }
השדה values
מציג את השינויים שבוצעו בכל עמודה בטווח. המערך הראשון מציין שצריך להשאיר את B1 ללא שינוי (בגלל רכיב המערך null
), ואילו צריך לנקות את B4 (מחרוזת ריקה). הערכים של B2 ו-B3 מתעדכנים. המערך השלישי מבצע את אותן פעולות בעמודה D, והמערך השני הריק מציין שצריך להשאיר את העמודה C ללא שינוי.
התשובה מורכבת מאובייקט UpdateValuesResponse
, למשל:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!B1:D5",
"updatedRows": 3,
"updatedColumns": 2,
"updatedCells": 6,
}
הגיליון שנוצר ייראה כך:
A | B | C | D | |
1 | פריט | עלות | מלאי | תאריך משלוח |
2 | גלגל ענק | 4 ש"ח | 4 | 1.4.2016 |
3 | דלת | 2$ | 2 | 15/04/2016 |
4 | מנוע | 1 | ||
5 | סה"כ | 12 ש"ח | 7 | 15/04/2016 |
שימו לב שגם אם הבקשה הזו לא משנה ישירות את השורה 'סה"כ', היא משתנה כי התאים שלה מכילים נוסחאות שתלויות בתאים שהשתנו.
כתיבת למספר טווחים
בדוגמת הקוד הבאה spreadsheets.values.batchUpdate
, שמתחילה בגיליון ריק, מוסבר איך לכתוב את הערכים בטווחים Sheet1!A1:A4 ו-Sheet1!B1:D2. הערכים הקיימים בטווח היעד יוחלפו. גוף הבקשה מורכב מאובייקט ValueInputOption
שמציג איך לפרש את נתוני הקלט, וממערך של אובייקטים מסוג ValueRange
שתואמים לכל טווח שכתוב. השדה majorDimension
קובע אם המערכיים הכלולים יתפסו כמערכי עמודות או כמערכי שורות.
פרוטוקול הבקשה מוצג בהמשך.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values:batchUpdate
{ "valueInputOption": "VALUE_INPUT_OPTION", "data": [ { "range": "Sheet1!A1:A4", "majorDimension": "COLUMNS", "values": [ ["Item", "Wheel", "Door", "Engine"] ] }, { "range": "Sheet1!B1:D2", "majorDimension": "ROWS", "values": [ ["Cost", "Stocked", "Ship Date"], ["$20.50", "4", "3/1/2016"] ] } ] }
התגובה מורכבת מאובייקט שמפרט את הנתונים הסטטיסטיים של התאים המעודכנים, וממערך של אובייקטים מסוג UpdateValuesResponse
, אחד לכל טווח מעודכן. לדוגמה:
{ "spreadsheetId":SPREADSHEET_ID
, "totalUpdatedRows": 4, "totalUpdatedColumns": 4, "totalUpdatedCells": 10, "totalUpdatedSheets": 1, "responses": [ { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A1:A4", "updatedRows": 4, "updatedColumns": 1, "updatedCells": 4, }, { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!B1:D2", "updatedRows": 2, "updatedColumns": 3, "updatedCells": 6, } ], }
הגיליון שנוצר ייראה כך:
A | B | C | D | |
1 | פריט | עלות | מלאי | תאריך משלוח |
2 | גלגל ענק | 20.50$ | 4 | 1.3.2016 |
3 | דלת | |||
4 | מנוע | |||
5 |
כתיבת ערכים ללא ניתוח
בדוגמת הקוד הבאה spreadsheets.values.update
, שמתחילה בגיליון ריק, מוסבר איך לכתוב את הערכים בטווח Sheet1!A1:E1, אבל נעשה שימוש בפרמטר השאילתה RAW
ValueInputOption
כדי למנוע ניתוח של המחרוזות שנכתבות כנוסחאות, כערכים בוליאנים או כמספרים. הם מופיעים כמחרוזות והטקסט מיושר בגיליון.
גוף הבקשה הוא אובייקט ValueRange
שמתאר את ערכי הטווח שרוצים לכתוב. השדה majorDimension
מציין שהמערכים הם רשימות של ערכים שמאורגנות לפי שורות. הערכים הקיימים בטווח היעד יוחלפו.
פרוטוקול הבקשה מוצג בהמשך.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1?valueInputOption=RAW
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Data", 123.45, true, "=MAX(D2:D4)", "10"] ], }
התשובה מורכבת מאובייקט UpdateValuesResponse
, למשל:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:E1",
"updatedRows": 1,
"updatedColumns": 5,
"updatedCells": 5,
}
הגיליון שנוצר ייראה כך:
A | B | C | D | E | |
1 | נתונים | 123.45 | TRUE | =MAX(D2:D4) | 10 |
2 |
שימו לב שהערך TRUE ממורכז והוא ערך בוליאני, בעוד שהערך 123.45 ממורכז בצד שמאל כי הוא מספר, והערך 10 ממורכז בצד ימין כי הוא מחרוזת. הנוסחה לא מנותחת ומופיעה גם כמחרוזת.
הוספת ערכים
מתחילים עם גיליון כמו הטבלה הבאה:
A | B | C | D | |
1 | פריט | עלות | מלאי | תאריך משלוח |
2 | גלגל ענק | 20.50$ | 4 | 1.3.2016 |
3 |
בדוגמת הקוד הבאה של spreadsheets.values.append
מוסבר איך מוסיפים שתי שורות חדשות של ערכים, החל משורה 3. פרמטר השאילתה ValueInputOption
נדרש והוא קובע אם הערכים שנכתבים יינתחו (לדוגמה, אם מחרוזת תוסב לתאריך או לא).
גוף הבקשה הוא אובייקט ValueRange
שמתאר את ערכי הטווח שרוצים לכתוב. השדה majorDimension
מציין שהמערכים הם רשימות של ערכים שמאורגנות לפי שורות.
פרוטוקול הבקשה מוצג בהמשך.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ], }
התשובה מורכבת מאובייקט AppendValuesResponse
, למשל:
{ "spreadsheetId":SPREADSHEET_ID
, "tableRange": "Sheet1!A1:D2", "updates": { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A3:D4", "updatedRows": 2, "updatedColumns": 4, "updatedCells": 8, } }
הגיליון שנוצר ייראה כך:
A | B | C | D | |
1 | פריט | עלות | מלאי | תאריך משלוח |
2 | גלגל ענק | 20.50$ | 4 | 1.3.2016 |
3 | דלת | 60 ש"ח | 2 | 15/03/2016 |
4 | מנוע | 400 ש"ח | 1 | 20/03/2016 |
5 |