คุณสามารถใช้ Google Sheets API ในการสร้างและอัปเดตแผนภูมิในสเปรดชีต ที่จำเป็น ตัวอย่างในหน้านี้จะแสดงให้เห็นวิธีที่คุณจะสามารถบรรลุ การดำเนินการกับแผนภูมิด้วย Sheets API
ตัวอย่างเหล่านี้จะแสดงในรูปแบบคำขอ HTTP เป็นภาษา เป็นกลาง หากต้องการทราบวิธีใช้การอัปเดตเป็นกลุ่มในภาษาต่างๆ โดยใช้ ไลบรารีของไคลเอ็นต์ Google API โปรดดูการอัปเดต สเปรดชีต
ในตัวอย่างต่อไปนี้ ตัวยึดตำแหน่ง SPREADSHEET_ID และ SHEET_ID
จะระบุตําแหน่งที่คุณจะส่งรหัสเหล่านั้น คุณจะพบสเปรดชีต
รหัสใน URL ของสเปรดชีต คุณสามารถ
รหัสชีตโดยใช้เมธอด
spreadsheets.get
มีการระบุช่วงโดยใช้รูปแบบ A1 CANNOT TRANSLATE
ช่วงตัวอย่างคือ Sheet1!A1:D5
นอกจากนี้ ตัวยึดตำแหน่ง CHART_ID จะแสดงรหัสของ
แผนภูมิ คุณสามารถตั้งค่ารหัสนี้เมื่อสร้างแผนภูมิด้วย Sheets API
หรืออนุญาตให้ชีต API สร้างให้คุณ คุณสามารถรับรหัสของ
ที่มีอยู่พร้อมกับ
spreadsheets.get
สุดท้าย ตัวยึดตำแหน่ง SOURCE_SHEET_ID จะระบุชีตที่มี ข้อมูลต้นฉบับ ในตัวอย่างต่อไปนี้ นี่คือตารางที่แสดงอยู่ใน แหล่งที่มาของแผนภูมิ ข้อมูล
ข้อมูลแหล่งที่มาของแผนภูมิ
สำหรับตัวอย่างต่อไปนี้ ให้สมมติว่าสเปรดชีตที่ใช้มีแหล่งที่มาต่อไปนี้ ในชีตแรก ("Sheet1") สตริงในแถวแรกคือป้ายกำกับสำหรับ แต่ละคอลัมน์ หากต้องการดูตัวอย่างวิธีการอ่านจากชีตอื่นๆ ใน สเปรดชีตของคุณ โปรดดูรูปแบบ A1
A | ข | C | D | E | |
1 | หมายเลขรุ่น | ฝ่ายขาย - ม.ค. | ฝ่ายขาย - ก.พ. | ฝ่ายขาย - มี.ค. | ยอดขายทั้งหมด |
2 | D-01X | 68 | 74 | 60 | 202 |
3 | ฝรั่งเศส - 0B1 | 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
เพื่อแก้ไขแผนภูมิที่สร้างในสูตรเพิ่มแผนภูมิคอลัมน์
แก้ไขข้อมูล ประเภท และลักษณะที่ปรากฏ พร็อพเพอร์ตี้บางส่วนของแผนภูมิไม่สามารถ
เปลี่ยนทีละรายการ หากต้องการแก้ไข คุณต้องระบุช่อง spec
ทั้งช่อง
ด้วย UpdateChartSpecRequest
โดยพื้นฐานแล้ว การแก้ไขข้อกำหนดของแผนภูมิ
ต้องเปลี่ยนเป็นอันใหม่
คำขอต่อไปนี้จะอัปเดตแผนภูมิดั้งเดิม (ระบุโดย 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 คูณ 100 พิกเซล
- ปรับขนาดเป็น 1200 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", }, } ] } ] }