כתיבה בסיסית

באמצעות 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 גלגל ענק 82.00 ש"ח 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 01.04.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 גלגל ענק 82.00 ש"ח 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 גלגל ענק 82.00 ש"ח 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 גלגל ענק 82.00 ש"ח 4 1.3.2016
3 דלת 60 ש"ח 2 15.03.2016
4 מנוע 400 ש"ח 1 20/03/2016
5