เอกสารนี้แสดงวิธีเรียก API แบบเป็นกลุ่มเพื่อลดจำนวนการเชื่อมต่อที่ไคลเอ็นต์ต้องสร้าง การแบ่งกลุ่มสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันได้โดยลดจำนวนครั้งที่เครือข่ายต้องส่งข้อมูลไปมาและเพิ่มปริมาณข้อมูลที่ได้รับ
ภาพรวม
การเชื่อมต่อแต่ละครั้งที่ลูกค้าทำจะทำให้เกิดค่าใช้จ่ายเพิ่มเติม Google ชีต API รองรับการรวมกลุ่มเพื่อให้ไคลเอ็นต์ส่งออบเจ็กต์คำขอหลายรายการ ซึ่งแต่ละรายการระบุคำขอประเภทเดียวที่จะดำเนินการ ไว้ในคำขอแบบกลุ่มเดียว คำขอแบบเป็นกลุ่มช่วยเพิ่มประสิทธิภาพได้ด้วยการรวมคำขอย่อยหลายรายการไว้ในการเรียกใช้เซิร์ฟเวอร์ครั้งเดียว เพื่อดึงข้อมูลการตอบกลับรายการเดียว
เราขอแนะนำให้ผู้ใช้ส่งคำขอหลายรายการพร้อมกันเสมอ ตัวอย่างสถานการณ์ที่คุณสามารถใช้การแยกกลุ่มมีดังนี้
- คุณเพิ่งเริ่มใช้ API และมีข้อมูลจำนวนมากที่จะอัปโหลด
- คุณต้องอัปเดตข้อมูลเมตาหรือพร็อพเพอร์ตี้ เช่น การจัดรูปแบบ ในออบเจ็กต์หลายรายการ
- คุณต้องลบออบเจ็กต์หลายรายการ
ข้อควรพิจารณาเกี่ยวกับขีดจํากัด การให้สิทธิ์ และทรัพยากร Dependency
รายการอื่นๆ ที่ควรพิจารณาเมื่อใช้การอัปเดตแบบเป็นกลุ่มมีดังนี้
- คำขอแบบกลุ่มแต่ละรายการ รวมถึงคำขอย่อยทั้งหมดจะนับเป็นคำขอ API 1 รายการตามขีดจำกัดการใช้งาน
- ระบบจะตรวจสอบสิทธิ์คําขอแบบเป็นกลุ่มเพียงครั้งเดียว การตรวจสอบสิทธิ์ครั้งเดียวนี้จะมีผลกับออบเจ็กต์การอัปเดตแบบเป็นกลุ่มทั้งหมดในคำขอ
- เซิร์ฟเวอร์จะประมวลผลคำขอย่อยตามลำดับเดียวกันกับที่ปรากฏในคำขอกลุ่ม คำขอย่อยที่ส่งมาภายหลังอาจขึ้นอยู่กับการดำเนินการที่ทำในคำขอย่อยก่อนหน้านี้ เช่น ในคำขอแบบเป็นกลุ่มเดียวกัน ผู้ใช้สามารถแทรกข้อความลงในเอกสารที่มีอยู่ แล้วจัดรูปแบบข้อความได้
รายละเอียดการประมวลผลเป็นกลุ่ม
คำขอแบบกลุ่มประกอบด้วยbatchUpdate
การเรียกใช้เมธอด 1 รายการ
ที่มีคำขอย่อยหลายรายการ เช่น เพิ่มและจัดรูปแบบสเปรดชีต
ระบบจะตรวจสอบคําขอแต่ละรายการก่อนนำไปใช้ ระบบจะใช้คำขอย่อยทั้งหมดในการอัปเดตแบบเป็นกลุ่มพร้อมกัน กล่าวคือ หากคำขอใดไม่ถูกต้อง การอัปเดตทั้งหมดจะไม่สำเร็จและจะไม่มีการใช้การเปลี่ยนแปลง (ที่อาจเกี่ยวข้อง) ใดๆ
คำขอบางรายการจะตอบกลับพร้อมข้อมูลเกี่ยวกับคำขอที่ใช้ ตัวอย่างเช่น คำขออัปเดตแบบเป็นกลุ่มทั้งหมดเพื่อเพิ่มออบเจ็กต์จะแสดงผลลัพธ์เพื่อให้คุณเข้าถึงข้อมูลเมตาของออบเจ็กต์ที่เพิ่มใหม่ได้ เช่น รหัสหรือชื่อ
แนวทางนี้ช่วยให้คุณสร้างเอกสาร Google ทั้งหมดได้โดยใช้ API เดียว โดยส่งคำขออัปเดตแบบเป็นกลุ่มที่มีคำขอย่อยหลายรายการ
รูปแบบคำขอแบบเป็นกลุ่ม
คำขอคือคำขอ JSON รายการเดียวที่มีคำขอย่อยที่ฝังอยู่หลายรายการซึ่งมีพร็อพเพอร์ตี้ที่ต้องระบุ 1 รายการ ได้แก่ requests
ระบบจะสร้างคําขอเป็นอาร์เรย์ของคําขอแต่ละรายการ คำขอแต่ละรายการใช้ JSON เพื่อแสดงออบเจ็กต์คำขอและเพื่อเก็บพร็อพเพอร์ตี้
รูปแบบของคำตอบแบบเป็นกลุ่ม
รูปแบบคำตอบสำหรับคำขอแบบเป็นกลุ่มจะคล้ายกับรูปแบบคำขอ การตอบกลับของเซิร์ฟเวอร์มีการตอบกลับที่สมบูรณ์ของออบเจ็กต์การตอบกลับรายการเดียว
พร็อพเพอร์ตี้ของออบเจ็กต์ JSON หลักมีชื่อว่า replies
ระบบจะแสดงคําตอบเป็นอาร์เรย์ โดยคําตอบแต่ละรายการสําหรับคําขอรายการใดรายการหนึ่งจะอยู่ในลําดับดัชนีเดียวกันกับคําขอที่เกี่ยวข้อง คำขอบางรายการไม่มีการตอบกลับและคำตอบที่อินเด็กซ์อาร์เรย์นั้นว่างเปล่า
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้การแยกกลุ่มกับ Sheets API
ส่งคำขอ
ตัวอย่างคำขอกลุ่มนี้แสดงวิธีต่อไปนี้
- เพิ่มชีตลงในสเปรดชีตที่มีอยู่ซึ่งมี
sheetId
เป็น 12345 โดยใช้AddSheetRequest
- เพิ่มข้อมูลลงในชีตใหม่โดยเริ่มจากเซลล์ A1 โดยใช้
UpdateCellsRequest
- เพิ่ม
namedRange
หรือมุมมองตัวกรองลงในชีตใหม่
การเพิ่มรหัสชีตในคำขอจะช่วยให้ผู้ใช้ใช้รหัสชีตสำหรับคำขอย่อยอื่นๆ ในการเรียก API เดียวกันได้ ซึ่งจะช่วยปรับปรุงประสิทธิภาพโดยการหลีกเลี่ยงวงจรเขียน-อ่าน-เขียน
ดูรายการประเภทคำขออัปเดตแบบเป็นกลุ่มที่จัดกลุ่มเป็นหมวดหมู่ต่างๆ ได้ที่ตารางในส่วนการดำเนินการอัปเดตแบบเป็นกลุ่ม
{ "requests":[ { "addSheet":{ "properties":{ "sheetId":123456 } } }, { "updateCells":{ "start":{ "sheetId":123456 }, "rows":[ { "values":[ { "userEnteredValue":{ "stringValue":"hello" } } ] }, { "values":[ { "userEnteredValue":{ "stringValue":"world" } } ] } ], "fields":"userEnteredValue" } }, { "addNamedRange":{ "namedRange":{ "name":"newRange", "range":{ "sheetId":123456, "endRowIndex":2 } } } } ] }
คำตอบ
ตัวอย่างการตอบกลับแบบเป็นกลุ่มนี้แสดงข้อมูลเกี่ยวกับวิธีใช้คำขอย่อยแต่ละรายการภายในคำขอแบบเป็นกลุ่ม โปรดทราบว่า UpdateCellsRequest
ไม่มีคำตอบ ดังนั้นค่าดัชนีของอาร์เรย์ที่ [1] จึงประกอบด้วยวงเล็บปีกกาว่าง
"replies":[ { "addSheet":{ "properties":{ "sheetId":123456, "title":"Sheet3", "index":2, "sheetType":"GRID", "gridProperties":{ "rowCount":1000, "columnCount":26 } } } }, { }, { "addNamedRange":{ "namedRange":{ "namedRangeId":"2104325079", "name":"newRange", "range":{ "sheetId":123456, "startRowIndex":0, "endRowIndex":2, "startColumnIndex":0, "endColumnIndex":26 } } } } ]