แผนภูมิ

คุณสามารถใช้ 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",
          },
        }
      ]
    }
  ]
}