שירות הטבלאות מאפשר לסקריפטים לקרוא ולערוך שורות בטבלאות של Google באופן פרוגרמטי.
חומרי עזר
מידע נוסף על השירות הזה זמין במאמרי העזרה של Tables API. בדומה לכל השירותים המתקדמים ב-Apps Script, שירות Tables משתמש באותם אובייקטים, שיטות ופרמטרים כמו ממשק ה-API הציבורי. מידע נוסף זמין במאמר איך נקבעות חתימות של שיטות.
כדי לדווח על בעיות ולמצוא תמיכה נוספת, אפשר לעיין במדריך התמיכה של Tables.
קוד לדוגמה
קבלת רשימת טבלאות
בדוגמה הבאה מוצג איך מקבלים רשימה של כל הטבלאות שבבעלות המשתמש.
// Get list of tables the user owns var response = Area120Tables.Tables.list(); if (response) { var tables = response.tables; Logger.log(JSON.stringify(tables[0])); }
למטה מוצגת דוגמה לתשובה, שכוללת מידע על הטבלה והגדרות של עמודות הטבלה:
{
“tables”: [
{
"name": "tables/b6prMlkWyekbsCFeX6IOdu",
"displayName": "Applicants"
"columns": [
{"id": "9qVCMvgh", "name": "Name", "dataType": "text"},
{"id": "aD8dDXAS", "name": "Email", "dataType": "text"},
{"id": "9pc0kdNX", "name": "Experience", "dataType": "tags_list",
"labels": [
{"id": "aAqi235Q", "name": "Android"},
{"id": "bULZ4OK3", "name": "iOS"},
],
},
{"id": "8abYfCyo", "name": "Home Address", "dataType": "location"},
{"id": "8ccERJ2v", "name": "Doc", "dataType": "file_attachment_list"},
{"id": "aFb-tXf1", "name": "Stage", "dataType": "dropdown",
"labels": [
{"id": "8Hcb-Pxe", "name": "Applied"},
{"id": "aM3EDGFf", "name": "Phone Screen"},
{"id": "abyFLVKU", "name": "Onsite Interview"},
],
},
{"id": "9yKUThTi", "name": "Recruiter", "dataType": "person_list"},
{"id": "a5c9WPVA", "name": "Interview Date", "dataType": "date"},
{"id": "bqtbYPtH", "name": "Created", "dataType": "create_timestamp"},
{"id": "bWR08pBv", "name": "Updated", "dataType": "update_timestamp"}
]
},
... // more tables
]
}
התשובה כוללת עד 20 טבלאות כברירת מחדל. כדי לאחזר עוד טבלאות, צריך להשתמש בפרמטרים page_token
ו-page_size
שמוצגים בהמשך כדי להגדיר את מספר התוצאות בכל דף.
// Paginate through a list of tables var pageSize = 1000; var pageToken; var response = Area120Tables.Tables.list({page_size: pageSize}); while (response) { var tables = response.tables; // get next page of tables pageToken = response.nextPageToken; if (!pageToken) { response = undefined; } else { response = Area120Tables.Tables.list(tableRequest, {page_size: pageSize, page_token: pageToken}); } }
הערך המקסימלי של הפרמטר page_size
לטבלאות של כרטיסי מוצר הוא 100.
קבלת מידע על טבלה והגדרות של עמודות
בדוגמה הבאה מוצג איך לקבל את המידע של טבלה ספציפית ואת הגדרת העמודה.
var tableID = "TABLE_ID
"; // ID for the table
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.get(tableName);
Logger.log(JSON.stringify(response));
איך מוצאים את מזהה הטבלה
כדי למצוא את המזהה של טבלה, פותחים את הטבלה באפליקציית האינטרנט של Tables. בכתובת ה-URL בחלק העליון, מזהה הטבלה מופיע מיד אחרי /table/
.
בדוגמה שלמטה אפשר לראות איפה מופיע מזהה הטבלה בכתובות URL שונות של Tables:
https://tables.area120.google.com/u/0/workspace/abcdefghijklmnop/table/TABLE_ID
https://tables.area120.google.com/u/0/table/TABLE_ID
https://tables.area120.google.com/u/0/table/TABLE_ID
/view/abcedfghijk
קריאת שורות בטבלה
בדוגמה הבאה אפשר לראות איך מקבלים רשימה של שורות בטבלה וקוראים את ערכי השדות.
var tableID = "TABLE_ID
"; // ID for the table
var pageToken;
var pageSize = 1000;
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.Rows.list(tableName)
if (response) {
for (var i = 0, rows = response.rows; i < rows.length; i++) {
if (!rows[i].values) { // If blank row, keep going
Logger.log("Empty row");
continue;
}
Logger.log(rows[i].values);
Logger.log(rows[i].values["Description"]);
}
}
דוגמה לתגובה מוצגת בהמשך. התגובה כוללת רשימה של השורות בטבלה והערכים של כל שדה.
{
“rows”: [
{
"name": "tables/TABLE_ID
/rows/a6tvEPska7l8rAlHlSdOLb",
"values": {
"Thing to do": "First item", // Text
"Size": 100, // Number
"ETA":{"month":12,"day":3,"year":2021} // Date
"Stage": "Completed", // Dropdown
"Checklist": [ // Checklist
"Do this",
"then this"
],
"Labels": [ // Tags
"Green",
"Purple"
],
"Address": { // Location
"latitude": 40.740726470947266,
"longitude": -74.00206756591797,
"address": "3014 Watson Lane, Sattler, TX 78130, USA"
},
"Archive?": true, // Checkbox
"ID#": 1, // Auto ID
"Row creator": "liz@gmail.com", // Creator / Updater / Person
"Last updated": "October 7, 2020 6:30:38 PM EDT",
"Created on": "March 2, 2020 1:07:54 PM EST",
}
},
... // More rows
],
}
התשובה כוללת עד 50 שורות כברירת מחדל. כדי לאחזר עוד שורות, צריך להשתמש בפרמטרים page_token
ו-page_size
שמוצגים בהמשך כדי להגדיר חלוקה לדפים של התשובות:
var pageToken; var pageSize = 1000; var response = Area120Tables.Tables.Rows.list(tableName, {page_size: pageSize}); while (response) { var rows = response.rows; // read next page of rows pageToken = response.nextPageToken; if (!pageToken) { response = undefined; } else { response = Area120Tables.Tables.Rows.list(tableName, {page_size: pageSize, page_token: pageToken}); } }
אם יש עוד דפים, התשובה תכיל nextPageToken
.
אחרת, התגובה לא מוגדרת. כדי לאחזר את דף התוצאות הבא, מעבירים את nextPageToken
לקריאה הבאה של הרשימה.
הערך המקסימלי של הפרמטר page_size
הוא 1,000.
קבלת שורה אחת מטבלה
בדוגמה הבאה מוצג אופן הקריאה של ערכי השדות בשורה אחת מטבלה.
var tableID = "TABLE_ID
"; // ID for the table var tableName = "tables/" + tableID; var rowID = "ROW_ID
"; // ID for the row to fetch var rowName = tableName + "/rows/" + rowID; // Construct row name var response = Area120Tables.Tables.Rows.get(rowName) if (response) { Logger.log(response.values); }
סינון רשימת השורות
כדי לסנן את רשימת השורות ולקבל רק את התוצאות שמעניינות אתכם, משתמשים בפרמטר filter
. לפרטים נוספים על התחביר ועל סוגי העמודות שנתמכים במסנן, אפשר לעיין במסמכי ה-API של הסינון.
var tableID = "TABLE_ID
"; // ID for the table
var pageToken;
var pageSize = 1000;
var tableName = "tables/" + tableID;
var response = Area120Tables.Tables.Rows.list(tableName, {filter:"values.\"Point of Contact\"=\"john.doe@gmail.com\""})
if (response) {
for (var i = 0, rows = response.rows; i < rows.length; i++) {
if (!rows[i].values) { // If blank row, keep going
Logger.log("Empty row");
continue;
}
Logger.log(rows[i].values);
Logger.log(rows[i].values["Description"]);
}
}
התשובה כוללת את השורות שבעמודה 'איש קשר' מוגדרות עם הערך 'john.doe@gmail.com'
{
“rows”: [
{
"name": "tables/TABLE_ID
/rows/a6tvEPska7l8rAlHlSdOLb",
"values": {
"Thing to do": "Second item", // Text
"Size": 110, // Number
"ETA":{"month":12,"day":3,"year":2021} // Date
"Stage": "Completed", // Dropdown
"Checklist": [ // Checklist
"Do this",
"then this",
"finally this"
],
"Labels": [ // Tags
"Green",
"Orange"
],
"Address": { // Location
"latitude": 45.740726470947266,
"longitude": -88.00206756591797,
"address": "6027 Holmes Lane, Sattler, TX 78130, USA"
},
"Archive?": false, // Checkbox
"ID#": 2, // Auto ID
"Point of Contact": "john.doe@gmail.com", // Person
"Last updated": "October 9, 2020 6:35:38 PM EDT",
"Created on": "March 10, 2020 1:07:54 PM EST",
}
},
... // More rows
],
}
יצירת שורה בטבלה
בדוגמה הבאה אפשר לראות איך מוסיפים שורה לטבלה.
var tableID = "TABLE_ID
"; // ID for the table
var tableName = "tables/" + tableID;
var values = {
"Number Column": 100,
"Text Column 2": "hello world",
"Date Column 3": new Date(),
"Dropdown Col.": "Dropdown value",
};
Area120Tables.Tables.Rows.create({values: values}, tableName);
כשמציינים את הערכים להגדרה בשורה החדשה, המפתחות של זוגות המפתח-ערך באובייקט חייבים להיות זהים בדיוק לכותרות של עמודות הטבלה, כולל אותיות רישיות, אלא אם הסוג של העמודה שאפשר לכתוב בה הוא lookup או summary. מגדירים ערכים לעמודות lookup ו-summary באמצעות הערך של הקשר. צריך לעדכן את הערך של קשר הגומלין באמצעות שם קשר הגומלין שמופיע בתיבת הדו-שיח Relationships (קשרי גומלין).
הערכים הקבילים בעמודה תלויים בסוג הנתונים של העמודה:
סוג עמודה | סוג הנתונים (קריאה) | סוגי קלט קבילים (כתיבה) |
---|---|---|
נתונים רגילים | ||
טקסט | String |
String |
מספר | Number |
Number |
תאריך | Date
|
Date , String (ברוב פורמטי התאריכים) |
נתונים עשירים | ||
Person | String (כתובת אימייל) |
String (חייב להיות זהה למשתמש Google) |
קובץ מצורף | Object[] { |
אי אפשר לשנות את השדה הזה באמצעות ה-API. |
מיקום | Object {
|
Object {
|
רשומה עשירה | ||
תפריט נפתח | String |
String (חייב להתאים לאפשרויות בתפריט הנפתח) |
תגים | String[] (מערך של אפשרויות תגים)
|
String[] (חייב להיות זהה לאפשרויות התג) |
תיבת סימון | Boolean |
Boolean |
רשימת משימות | String[] (מערך של פריטים ברשימה) |
String[] (חייב להיות זהה לפריטים ברשימה) |
נתונים מקושרים | ||
קשר | String |
String: "tables/[LINKED_TABLE_ID]/rows/[LINKED_ROW_ID]"
|
חיפוש | תלוי בסוג העמודה של המקור. | אי אפשר לשנות את השדה הזה, והוא יתעדכן לפי הערך המקושר. |
סיכום | תלוי בסוג עמודת המקור ובפונקציית הסיכום: ספירה: Number מקסימום בעמודה מסוג Date: String רשימת ערכים: Array |
אי אפשר לשנות את השדה הזה. |
שדה מחושב | ||
מזהה אוטומטי | Number |
אי אפשר לשנות את השדה הזה. |
מטא-נתונים | ||
יוצרים | String |
אי אפשר לשנות את השדה הזה. |
זמן יצירה | Object {
|
אי אפשר לשנות את השדה הזה. |
Updater | String |
אי אפשר לשנות את השדה הזה. |
זמן העדכון | Object { |
אי אפשר לשנות את השדה הזה. |
שירות Tables מנסה כמיטב יכולתו להמיר ערכים נתונים כך שיתאימו לסוג העמודה. אם הנתונים לא תואמים, הערך לא יוגדר והוא יישאר ריק בשורות חדשות.
הוספת כמה שורות לטבלה
בדוגמה הבאה אפשר לראות איך מוסיפים כמה שורות לטבלה בו-זמנית.
var tableID = “TABLE_ID
”;
var tableName = "tables/" + tableID;
Area120Tables.Tables.Rows.batchCreate({requests: [
{row:{values:{"Col 1":"Sample", "Col 2":"One", "Col 3":"A"}}},
{row:{values:{"Col 1":"Example", "Col 2":"Two", "Col 3":"B"}}},
{row:{values:{"Col 1":"Test", "Col 2":"Three", "Col 3":"C"}}},
]}, tableName)
עדכון שורה בטבלה
בדוגמה הבאה מוצג איך לעדכן את הערכים של שורה קיימת בטבלה:
var rowName = "tables/TABLE_ID
/rows/ROW_ID
"; var values = {"Column": "HELLO"}; var response = Area120Tables.Tables.Rows.patch({values: values}, rowName); Logger.log("Update row:" + JSON.stringify(response));
איך מוצאים את מזהה השורה
יש שתי דרכים למצוא את המזהה של שורה:
קבלת מזהה השורה באמצעות ה-API
כשקוראים שורות מטבלה, אפשר להשתמש במאפיין name
לכל שורה, שכולל את מזהי הטבלה והשורה.
איך מוצאים את מזהה השורה בממשק המשתמש של Tables
- פותחים את הטבלה באפליקציית האינטרנט Tables.
- לוחצים לחיצה ימנית על השורה.
- לוחצים על קבלת קישור לשורה הזו.
- מדביקים את כתובת ה-URL במקום כלשהו כדי שיהיה אפשר להעתיק את המזהה.
- בכתובת ה-URL, המזהה מופיע אחרי
/row/
.
בדוגמה שלמטה אפשר לראות איפה מופיע מזהה השורה בכתובת ה-URL:
https://tables.area120.google.com/table/TABLE_ID
/row/ROW_ID
עדכון של כמה שורות בטבלה
בדוגמה הבאה מוצג איך לעדכן את הערכים של כמה שורות בטבלה:
var tableID = “TABLE_ID
”; var tableName = "tables/" + tableID; var requests = [ {row: {name: "tables/TABLE_ID
/rows/ROW_ID_1
", values: {"Column": "WORLD"}}}, {row: {name: "tables/TABLE_ID
/rows/ROW_ID_2
", values: {"Column": "WORLD"}}}, {row: {name: "tables/TABLE_ID
/rows/ROW_ID_3
", values: {"Column": "WORLD"}}}, ]; var response = Area120Tables.Tables.Rows.batchUpdate({requests: requests}, tableName); Logger.log("Batch update rows:" + JSON.stringify(response));
מחיקת שורה בטבלה
בדוגמה הבאה מוצג איך למחוק שורה אחת מטבלה:
var rowName = "tables/TABLE_ID
/rows/ROW_ID
"; var response = Area120Tables.Tables.Rows.remove(rowName); Logger.log("Delete row:" + JSON.stringify(response));
מחיקת כמה שורות בטבלה
בדוגמה הבאה מוצג איך למחוק כמה שורות בטבלה:
var tableID = “TABLE_ID
”; var tableName = "tables/" + tableID; var rowNames = [ "tables/TABLE_ID
/rows/ROW_ID_1
", "tables/TABLE_ID
/rows/ROW_ID_2
", "tables/TABLE_ID
/rows/ROW_ID_3
", ]; Area120Tables.Tables.Rows.batchDelete({names: rowNames}, tableName);
שחזור שורות שנמחקו
אפשר לשחזר שורות שנמחקו מממשק המשתמש של Tables. כדי לשחזר שורה שנמחקה, פועלים לפי השלבים הבאים:
- במחשב, פותחים את אפליקציית האינטרנט של Tables.
- פותחים את הטבלה שרוצים לשחזר בה שורות.
- למעלה, לוחצים על 'הצגת שורות ועמודות שנמחקו' .
- לוחצים על שורות שנמחקו.
- משמאל לשורה שרוצים לשחזר, לוחצים על סמל השחזור מהאשפה .
קבלת רשימה של סביבות עבודה
בדוגמה הבאה מוצג איך מקבלים רשימה של כל סביבות העבודה שהמשתמש הוא הבעלים שלהן.
// Get list of workspaces the user owns and lists the tables in each one: var response = Area120Tables.Workspaces.list(); if (response) { var workspaces = response.workspaces; for (var workspace of workspaces){ Logger.log(workspace.displayName); for (var table of workspace.tables) { Logger.log('Table: ' + table); } } }
דוגמה ליומני הפלט:
My Workspace Table: Table 1 Table: Table 2 My TODOs Table: Tasks