ขีดจำกัดการใช้งาน

Google Sheets API เป็นบริการที่ใช้ร่วมกัน และเราใช้โควต้าและข้อจำกัดเพื่อ ปกป้องประสิทธิภาพโดยรวมของระบบ Google Workspace สำหรับผู้ใช้ทุกคน

ขีดจำกัดโควต้า

แม้ว่า Sheets API จะไม่มีการจำกัดขนาดคำขอ API อย่างเข้มงวด แต่ผู้ใช้อาจพบข้อจำกัดจากคอมโพเนนต์การประมวลผลต่างๆ ที่ Google ชีตควบคุมไม่ได้ เราขอแนะนำให้ใช้เพย์โหลดสูงสุด 2 MB เพื่อให้คำขอเร็วขึ้น

Sheets API มีโควต้าต่อนาทีและจะเติมโควต้าทุกนาที เช่น มีขีดจำกัดคำขออ่าน 300 รายการต่อนาทีต่อโปรเจ็กต์ หากแอปส่งคำขอ 350 รายการใน 1 นาที คำขออีก 50 รายการจะเกินโควต้าและสร้างการตอบกลับเป็นรหัสสถานะ HTTP 429: Too many requests หากเกิดกรณีนี้ขึ้น คุณควรใช้อัลกอริทึม Exponential Backoff หลังจากผ่านไป 1 นาที คุณจะเรียกใช้คำขอได้อีกครั้ง

ตารางต่อไปนี้แสดงรายละเอียดขีดจำกัดของคำขอ

โควต้า
คำขอที่อ่าน
ต่อนาทีต่อโปรเจ็กต์ 300
ต่อนาทีต่อผู้ใช้ต่อโปรเจ็กต์ 60
คำขอที่เขียน
ต่อนาทีต่อโปรเจ็กต์ 300
ต่อนาทีต่อผู้ใช้ต่อโปรเจ็กต์ 60

โปรดดูรายละเอียดเกี่ยวกับขีดจำกัดของไฟล์ที่หัวข้อไฟล์ที่คุณเก็บไว้ใน Google ไดรฟ์ได้

ลักษณะการทำงานและข้อจำกัด

ขณะทำงานกับ ((sheets_api_short)) โปรดทราบลักษณะการทำงานและ ข้อจำกัดต่อไปนี้ซึ่งส่งผลต่อโควต้า

  • คำขออ่านคือการเรียกใช้เมธอดใดก็ตามที่ดึงข้อมูลจากสเปรดชีต เช่น get หรือ search คำขอเขียนคือการเรียกเมธอดที่เปลี่ยนแปลงสเปรดชีต เช่น update, clear หรือ copyTo

  • ผู้ใช้สามารถส่งคำขอหลายรายการพร้อมกันได้ตราบใดที่คำขอเหล่านั้นอยู่ภายในโควต้าที่กำหนด คำขอแบบกลุ่มแต่ละรายการ รวมถึงคำขอย่อยใดๆ จะนับเป็นคำขอ API 1 รายการที่รวมอยู่ในขีดจำกัดการใช้งาน

  • ระบบจะใช้คำขอชีตทั้งหมดแบบอะตอมมิก กล่าวคือ หากคำขอใดไม่ถูกต้อง การอัปเดตทั้งหมดจะไม่สำเร็จและระบบจะไม่ใช้การเปลี่ยนแปลงใดๆ (ซึ่งอาจขึ้นอยู่กับคำขออื่น)

  • มีขีดจำกัดเวลาสูงสุดสำหรับการประมวลผลคำขอ API 1 รายการ เมื่อ ชีตประมวลผลคำขอนานกว่า 180 วินาที คำขอจะแสดงข้อผิดพลาดหมดเวลา

  • หากคุณใช้โควต้าต่อนาทีตามที่กำหนด คุณจะส่งคำขอได้ไม่จำกัดจำนวนต่อวัน

แก้ไขข้อผิดพลาดเกี่ยวกับโควต้าตามเวลา

สำหรับข้อผิดพลาดทั้งหมดที่อิงตามเวลา (คำขอสูงสุด N รายการต่อ X นาที) เราขอแนะนำให้ โค้ดของคุณตรวจพบข้อยกเว้นและใช้Exponential Backoff ที่ถูกตัดเพื่อให้แน่ใจว่าอุปกรณ์ จะไม่สร้างภาระงานมากเกินไป

Exponential Backoff เป็นกลยุทธ์การจัดการข้อผิดพลาดมาตรฐานสำหรับแอปพลิเคชันเครือข่าย อัลกอริทึม Exponential Backoff จะลองส่งคำขออีกครั้งโดยใช้เวลารอที่เพิ่มขึ้นแบบทวีคูณ ระหว่างคำขอต่างๆ จนถึงเวลา Backoff สูงสุด หากคำขอไม่สำเร็จ คุณควร เพิ่มความล่าช้าระหว่างคำขอเมื่อเวลาผ่านไปจนกว่าคำขอจะสำเร็จ

ตัวอย่างอัลกอริทึม

อัลกอริทึม Exponential Backoff จะลองส่งคำขออีกครั้งแบบทวีคูณ โดยจะเพิ่มเวลารอ ระหว่างการลองส่งอีกครั้งจนถึงเวลา Backoff สูงสุด เช่น

  1. ส่งคำขอไปยัง Google Sheets API
  2. หากคำขอไม่สำเร็จ ให้รอ 1 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  3. หากคำขอไม่สำเร็จ ให้รอ 2 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  4. หากคำขอไม่สำเร็จ ให้รอ 4 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  5. และอื่นๆ สูงสุด maximum_backoff ครั้ง
  6. รอและลองอีกครั้งต่อไปจนถึงจำนวนครั้งสูงสุดที่กำหนด แต่ไม่ต้องเพิ่มระยะเวลารอ ระหว่างการลองอีกครั้ง

where:

  • เวลารออยู่ที่ min(((2^n)+random_number_milliseconds), maximum_backoff) โดย n จะเพิ่มขึ้น 1 สำหรับการวนซ้ำ (คำขอ) แต่ละครั้ง
  • random_number_milliseconds คือจำนวนมิลลิวินาทีแบบสุ่มที่น้อยกว่าหรือเท่ากับ 1,000 ซึ่งจะช่วยหลีกเลี่ยงกรณีที่ไคลเอ็นต์จำนวนมากซิงค์กันใน บางสถานการณ์และลองอีกครั้งพร้อมกันทั้งหมด ซึ่งจะส่งคำขอเป็นชุดที่ซิงค์กัน ระบบจะคำนวณค่าของ random_number_milliseconds ใหม่หลังจากคำขอ ลองอีกครั้งแต่ละครั้ง
  • maximum_backoff โดยทั่วไปจะยาว 32 หรือ 64 วินาที ค่าที่เหมาะสม ขึ้นอยู่กับกรณีการใช้งาน

ไคลเอ็นต์จะลองอีกครั้งต่อไปได้หลังจากถึงเวลา maximum_backoff การลองใหม่หลังจากจุดนี้ไม่จำเป็นต้องเพิ่มเวลา Backoff ต่อไป ตัวอย่างเช่น หากไคลเอ็นต์ใช้maximum_backoffเป็นเวลา 64 วินาที หลังจากถึงค่านี้แล้ว ไคลเอ็นต์จะลองอีกครั้งทุกๆ 64 วินาทีได้ ในบางกรณี ไม่ควรให้ไคลเอ็นต์ลองอีกครั้งอย่างไม่มีกำหนด

เวลารอระหว่างการลองใหม่และจำนวนครั้งที่ลองใหม่จะขึ้นอยู่กับกรณีการใช้งาน และสภาพเครือข่าย

ราคา

การใช้ Google Sheets API ทั้งหมดจะใช้งานได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม การส่งคำขอเกินโควต้า จะไม่ทำให้เกิดค่าใช้จ่ายเพิ่มเติมและระบบจะไม่เรียกเก็บเงินจากบัญชีของคุณ

ขอเพิ่มโควต้า

คุณอาจต้องขอปรับโควต้า ทั้งนี้ขึ้นอยู่กับการใช้ทรัพยากรของโปรเจ็กต์ การเรียก API โดยบัญชีบริการจะถือว่าเป็นการใช้บัญชีเดียว การขอโควต้าที่ปรับแล้วอาจไม่ได้รับการอนุมัติเสมอไป คำขอปรับโควต้า ซึ่งจะเพิ่มค่าโควต้าอย่างมากอาจใช้เวลานานกว่าในการอนุมัติ

โปรเจ็กต์แต่ละโปรเจ็กต์อาจมีโควต้าไม่เหมือนกัน เมื่อคุณใช้ Google Cloud มากขึ้นเรื่อยๆ ค่าโควต้าอาจต้องเพิ่มขึ้น หากคาดการณ์ว่าการใช้งานจะเพิ่มขึ้นอย่างเห็นได้ชัดในอนาคต คุณสามารถขอปรับโควต้าล่วงหน้าได้จากหน้าโควต้าในคอนโซล Google Cloud

ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้