Google Sheets API ช่วยให้คุณสร้างและอัปเดตแผนภูมิภายในสเปรดชีตได้ตามต้องการ ตัวอย่างในหน้านี้จะแสดงวิธีที่คุณสามารถใช้ชีต API เพื่อเรียกใช้การดำเนินการทั่วไปบางอย่างเกี่ยวกับแผนภูมิ
ตัวอย่างเหล่านี้แสดงในรูปแบบคำขอ HTTP โดยแสดงเป็นภาษากลาง หากต้องการดูวิธีใช้การอัปเดตแบบกลุ่มในภาษาต่างๆ โดยใช้ไลบรารีของไคลเอ็นต์ Google API โปรดดูอัปเดตสเปรดชีต
ในตัวอย่างต่อไปนี้ ตัวยึดตำแหน่ง SPREADSHEET_ID และ SHEET_ID ระบุตำแหน่งที่คุณจะระบุรหัสเหล่านั้น คุณดูรหัสของสเปรดชีตได้ใน URL ของสเปรดชีต คุณดูรหัสชีตได้โดยใช้เมธอด spreadsheets.get
โดยจะระบุช่วงโดยใช้รูปแบบ A1 ช่วงตัวอย่างคือ Sheet1!A1:D5
นอกจากนี้ ตัวยึดตำแหน่ง CHART_ID ยังบ่งบอกถึงรหัสของแผนภูมิที่กำหนด คุณสามารถตั้งค่ารหัสนี้เมื่อสร้างแผนภูมิด้วย Sheets API หรืออนุญาตให้ Sheets API สร้างแผนภูมิ คุณดูรหัสของแผนภูมิที่มีอยู่ได้โดยใช้เมธอด spreadsheets.get
สุดท้าย ตัวยึดตำแหน่ง SOURCE_SHEET_ID จะแสดงชีตที่มีข้อมูลต้นทาง ในตัวอย่างต่อไปนี้ นี่คือตารางที่แสดงอยู่ในส่วนข้อมูลต้นฉบับของแผนภูมิ
ข้อมูลแหล่งที่มาของแผนภูมิ
สำหรับตัวอย่างต่อไปนี้ สมมติว่าสเปรดชีตที่ใช้มีข้อมูลต้นฉบับต่อไปนี้ในชีตแรก ("Sheet1") สตริงในแถวแรกคือป้ายกำกับสำหรับแต่ละคอลัมน์ หากต้องการดูตัวอย่างวิธีการอ่านจากชีตอื่นๆ ในสเปรดชีต โปรดดูที่หมายเหตุ A1
ก | B | C | D | จ. | |
1 | หมายเลขรุ่น | ฝ่ายขาย - ม.ค. | ฝ่ายขาย - ก.พ. | ฝ่ายขาย - มี.ค. | ยอดขายรวม |
2 | D-01X | 68 | 74 | 60 | 202 |
3 | ฝรั่งเศส-0ข1 | 97 | 76 | 88 | 261 |
4 | P-034 | 27 | 49 | 32 | 108 |
5 | P-105 | 46 | 44 | 67 | 157 |
6 | W-11 | 75 | 68 | 87 | 230 |
7 | W-24 | 74 | 52 | 62 | 188 |
เพิ่มแผนภูมิคอลัมน์
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
AddChartRequest
เพื่อสร้างแผนภูมิคอลัมน์จากข้อมูลต้นฉบับ โดยนำไปวางในชีตใหม่ คำขอจะดำเนินการต่อไปนี้เพื่อกำหนดค่าแผนภูมิ
- ตั้งค่าประเภทแผนภูมิเป็นแผนภูมิคอลัมน์
- เพิ่มคำอธิบายที่ด้านล่างของแผนภูมิ
- ตั้งค่าแผนภูมิและชื่อแกน
- กำหนดค่าข้อมูล 3 ชุด ซึ่งแสดงยอดขายเป็นเวลา 3 เดือนที่แตกต่างกันโดยใช้การจัดรูปแบบและสีเริ่มต้น
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addChart": { "chart": { "spec": { "title": "Model Q1 Sales", "basicChart": { "chartType": "COLUMN", "legendPosition": "BOTTOM_LEGEND", "axis": [ { "position": "BOTTOM_AXIS", "title": "Model Numbers" }, { "position": "LEFT_AXIS", "title": "Sales" } ], "domains": [ { "domain": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 0, "endColumnIndex": 1 } ] } } } ], "series": [ { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 1, "endColumnIndex": 2 } ] } }, "targetAxis": "LEFT_AXIS" }, { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 2, "endColumnIndex": 3 } ] } }, "targetAxis": "LEFT_AXIS" }, { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 3, "endColumnIndex": 4 } ] } }, "targetAxis": "LEFT_AXIS" } ], "headerCount": 1 } }, "position": { "newSheet": true } } } } ] }
คําขอจะสร้างแผนภูมิในชีตใหม่ดังนี้
เพิ่มแผนภูมิวงกลม
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
AddChartRequest
เพื่อสร้างแผนภูมิวงกลม 3 มิติจากข้อมูลต้นฉบับ คำขอจะดำเนินการต่อไปนี้
เพื่อกำหนดค่าแผนภูมิ
- ตั้งชื่อแผนภูมิ
- เพิ่มคำอธิบายทางด้านขวาของแผนภูมิ
- ตั้งค่าแผนภูมิเป็นแผนภูมิวงกลม 3 มิติ โปรดทราบว่าแผนภูมิวงกลม 3 มิติไม่สามารถมี "รูโดนัท" อยู่ตรงกลางแบบแผนภูมิวงกลมแบบแบนได้
- ตั้งค่าชุดข้อมูลแผนภูมิเป็นยอดขายรวมสำหรับหมายเลขรุ่นแต่ละหมายเลข
- ยึดแผนภูมิไว้ในเซลล์ C3 ของชีตที่ระบุด้วย SHEET_ID โดยมีออฟเซ็ต 50 พิกเซลทั้งในทิศทาง X และ Y
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addChart": { "chart": { "spec": { "title": "Model Q1 Total Sales", "pieChart": { "legendPosition": "RIGHT_LEGEND", "threeDimensional": true, "domain": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 0, "endColumnIndex": 1 } ] } }, "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 7, "startColumnIndex": 4, "endColumnIndex": 5 } ] } }, } }, "position": { "overlayPosition": { "anchorCell": { "sheetId": SHEET_ID, "rowIndex": 2, "columnIndex": 2 }, "offsetXPixels": 50, "offsetYPixels": 50 } } } } } ] }
คำขอจะสร้างแผนภูมิดังนี้
นอกจากนี้ คุณยังอัปเดตค่า LegPosition จาก RIGHT_LEGEND เป็น LABELED_LEGEND ภายในคำขอเพื่อให้ค่าคำอธิบายเชื่อมต่อกับชิ้นส่วนแผนภูมิวงกลมได้ด้วย
'legendPosition': 'LABELED_LEGEND',
คำขอที่อัปเดตจะสร้างแผนภูมิดังนี้
เพิ่มแผนภูมิเส้นโดยใช้ช่วงที่ไม่ได้อยู่ติดกันหลายช่วง
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
AddChartRequest
เพื่อสร้างแผนภูมิเส้นจากข้อมูลต้นฉบับโดยวางไว้ในชีตแหล่งที่มา
การเลือกช่วงที่ไม่ติดกันจะใช้เพื่อยกเว้นแถวจาก ChartSourceRange
ได้
คำขอจะดำเนินการต่อไปนี้เพื่อกำหนดค่าแผนภูมิ
- ตั้งค่าประเภทแผนภูมิเป็นแผนภูมิเส้น
- ตั้งชื่อแกน X ในแนวนอน
- กำหนดค่าชุดข้อมูลที่แสดงถึงยอดขาย โดยจะตั้งค่า A1:A3 และ A6:A7 เป็น
domain
และ B1:B3 และ B6:B7 เป็นseries
โดยใช้การจัดรูปแบบและสีเริ่มต้น ช่วงจะกำหนดโดยใช้หมายเหตุ A1 ใน URL คำขอ - ตรึงแผนภูมิในเซลล์ H8 ของชีตที่ระบุโดย SHEET_ID
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "addChart": { "chart": { "spec": { "basicChart": { "chartType": "LINE", "domains": [ { "domain": { "sourceRange": { "sources": [ { "startRowIndex": 0, "endRowIndex": 3, "startColumnIndex": 0, "endColumnIndex": 1, "sheetId": SOURCE_SHEET_ID }, { "startRowIndex": 5, "endRowIndex": 7, "startColumnIndex": 0, "endColumnIndex": 1, "sheetId": SOURCE_SHEET_ID } ] } } } ], "series": [ { "series": { "sourceRange": { "sources": [ { "startRowIndex": 0, "endRowIndex": 3, "startColumnIndex": 1, "endColumnIndex": 2, "sheetId": SOURCE_SHEET_ID }, { "startRowIndex": 5, "endRowIndex": 7, "startColumnIndex": 1, "endColumnIndex": 2, "sheetId": SOURCE_SHEET_ID } ] } } } ] } }, "position": { "overlayPosition": { "anchorCell": { "sheetId": SOURCE_SHEET_ID, "rowIndex": 8, "columnIndex": 8 } } } } } } ] }
คําขอจะสร้างแผนภูมิในชีตใหม่ดังนี้
ลบแผนภูมิ
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
DeleteEmbeddedObjectRequest
เพื่อลบแผนภูมิที่ระบุโดย CHART_ID
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "deleteEmbeddedObject": { "objectId": CHART_ID } } ] }
แก้ไขคุณสมบัติของแผนภูมิ
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
UpdateChartSpecRequest
เพื่อแก้ไขแผนภูมิที่สร้างในสูตรเพิ่มแผนภูมิคอลัมน์
โดยแก้ไขข้อมูล ประเภท และลักษณะที่ปรากฏ ชุดย่อยของพร็อพเพอร์ตี้แผนภูมิไม่สามารถเปลี่ยนแปลงแยกกันได้ หากต้องการแก้ไข คุณต้องใส่ UpdateChartSpecRequest
ในช่อง spec
ทั้งช่อง การแก้ไขข้อกำหนดของแผนภูมิจะต้องแทนที่ด้วยข้อกำหนดใหม่
คำขอต่อไปนี้จะอัปเดตแผนภูมิเดิม (ระบุโดย CHART_ID)
- ตั้งค่าประเภทแผนภูมิเป็น
BAR
- เลื่อนคำอธิบายไปทางขวาของแผนภูมิ
- กลับแกนเพื่อให้ "Sales" อยู่บนแกนด้านล่างและ "หมายเลขรุ่น" อยู่บนแกนด้านซ้าย
- ตั้งค่ารูปแบบชื่อแกนเป็นแบบอักษรขนาด 24 จุด ตัวหนา และตัวเอียง
- นำข้อมูล "W-24" ออกจากแผนภูมิ (แถว 7 ในข้อมูลแหล่งที่มาแผนภูมิ)
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "updateChartSpec": { "chartId": CHART_ID, "spec": { "title": "Model Q1 Sales", "basicChart": { "chartType": "BAR", "legendPosition": "RIGHT_LEGEND", "axis": [ { "format": { "bold": true, "italic": true, "fontSize": 24 }, "position": "BOTTOM_AXIS", "title": "Sales" }, { "format": { "bold": true, "italic": true, "fontSize": 24 }, "position": "LEFT_AXIS", "title": "Model Numbers" } ], "domains": [ { "domain": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 6, "startColumnIndex": 0, "endColumnIndex": 1 } ] } } } ], "series": [ { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 6, "startColumnIndex": 1, "endColumnIndex": 2 } ] } }, "targetAxis": "BOTTOM_AXIS" }, { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 6, "startColumnIndex": 2, "endColumnIndex": 3 } ] } }, "targetAxis": "BOTTOM_AXIS" }, { "series": { "sourceRange": { "sources": [ { "sheetId": SOURCE_SHEET_ID, "startRowIndex": 0, "endRowIndex": 6, "startColumnIndex": 3, "endColumnIndex": 4 } ] } }, "targetAxis": "BOTTOM_AXIS" } ], "headerCount": 1 } } } } ] }
หลังจากส่งคำขอ แผนภูมิจะมีลักษณะดังนี้
ย้ายหรือปรับขนาดแผนภูมิ
ตัวอย่างโค้ด
spreadsheets.batchUpdate
ต่อไปนี้จะแสดงวิธีใช้
UpdateEmbeddedObjectPositionRequest
เพื่อย้ายและปรับขนาดแผนภูมิ หลังจากส่งคำขอ แผนภูมิที่ CHART_ID ระบุจะมีค่าดังนี้
- ตรึงกับเซลล์ A5 ของชีตต้นฉบับแล้ว
- ออฟเซ็ตในทิศทาง X x 100 พิกเซล
- ปรับขนาดเป็น 1,200 x 742 พิกเซล (ขนาดเริ่มต้นของแผนภูมิคือ 600 x 371 พิกเซล)
คำขอนี้จะเปลี่ยนเฉพาะพร็อพเพอร์ตี้ที่ระบุด้วยพารามิเตอร์ fields
เท่านั้น
พร็อพเพอร์ตี้อื่นๆ (เช่น offsetYPixels
) จะยังคงค่าเดิม
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{ "requests": [ { "updateEmbeddedObjectPosition": { "objectId": CHART_ID, "newPosition": { "overlayPosition": { "anchorCell": { "rowIndex": 4, "columnIndex": 0 }, "offsetXPixels": 100, "widthPixels": 1200, "heightPixels": 742 } }, "fields": "anchorCell(rowIndex,columnIndex),offsetXPixels,widthPixels,heightPixels" } } ] }
อ่านข้อมูลแผนภูมิ
ตัวอย่างโค้ด spreadsheets.get
ต่อไปนี้แสดงวิธีรับข้อมูลแผนภูมิจากสเปรดชีต พารามิเตอร์การค้นหา fields
จะระบุว่าควรแสดงเฉพาะข้อมูลแผนภูมิเท่านั้น
การตอบสนองต่อการเรียกเมธอดนี้คือออบเจ็กต์ spreadsheet
ซึ่งมีอาร์เรย์ของออบเจ็กต์ sheet
แผนภูมิที่อยู่ในชีตจะแสดงในออบเจ็กต์ sheet
หากมีการตั้งค่าช่องการตอบกลับเป็นค่าเริ่มต้น ช่องนั้นจะไม่รวมอยู่ในการตอบกลับ
ในตัวอย่างนี้ แผ่นงานแรก (SOURCE_SHEET_ID) ไม่มีแผนภูมิ ดังนั้นจึงแสดงผลวงเล็บปีกกาคู่ที่ว่างเปล่า แผ่นงานที่ 2 แสดงแผนภูมิที่สร้างโดยเพิ่มแผนภูมิคอลัมน์ และไม่มีข้อมูลอื่นๆ
โปรโตคอลคำขอแสดงอยู่ด้านล่าง
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(charts)
{ "sheets": [ {}, { "charts": [ { "chartId": CHART_ID, "position": { "sheetId": SHEET_ID }, "spec": { "basicChart": { "axis": [ { "format": { "bold": false, "italic": false }, "position": "BOTTOM_AXIS", "title": "Model Numbers" }, { "format": { "bold": false, "italic": false }, "position": "LEFT_AXIS", "title": "Sales" } ], "chartType": "COLUMN", "domains": [ { "domain": { "sourceRange": { "sources": [ { "endColumnIndex": 1 "endRowIndex": 7, "sheetId": SOURCE_SHEET_ID, "startColumnIndex": 0, "startRowIndex": 0, } ] } } } ], "legendPosition": "BOTTOM_LEGEND", "series": [ { "series": { "sourceRange": { "sources": [ { "endColumnIndex": 2, "endRowIndex": 7, "sheetId": SOURCE_SHEET_ID, "startColumnIndex": 1, "startRowIndex": 0, } ] } }, "targetAxis": "LEFT_AXIS" }, { "series": { "sourceRange": { "sources": [ { "endColumnIndex": 3, "endRowIndex": 7, "sheetId": SOURCE_SHEET_ID, "startColumnIndex": 2, "startRowIndex": 0, } ] } }, "targetAxis": "LEFT_AXIS" }, { "series": { "sourceRange": { "sources": [ { "endColumnIndex": 4, "endRowIndex": 7, "sheetId": SOURCE_SHEET_ID, "startColumnIndex": 3, "startRowIndex": 0, } ] } }, "targetAxis": "LEFT_AXIS" } ] }, "hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS", "title": "Model Q1 Sales", }, } ] } ] }