درخواست های دسته ای

این سند نشان می‌دهد که چگونه می‌توانید تماس‌های API را با هم دسته‌بندی کنید تا تعداد اتصال‌هایی که مشتری شما باید برقرار کند را کاهش دهید. بچینگ می تواند با کاهش رفت و برگشت شبکه و افزایش توان عملیاتی، کارایی برنامه را بهبود بخشد.

بررسی اجمالی

هر اتصالی که مشتری شما ایجاد می کند منجر به مقدار معینی سربار می شود. API کاربرگ‌نگار Google از دسته‌بندی پشتیبانی می‌کند تا به مشتری شما اجازه دهد چندین شیء درخواست را که هر کدام یک نوع درخواست را برای انجام مشخص می‌کنند، در یک درخواست دسته‌ای قرار دهد. یک درخواست دسته ای می تواند با ترکیب چندین درخواست فرعی در یک تماس با سرور، عملکرد را افزایش دهد و یک پاسخ را بازیابی کند.

ما کاربران را تشویق می کنیم که همیشه چندین درخواست را با هم دسته بندی کنند. در اینجا چند نمونه از موقعیت هایی وجود دارد که می توانید از بچینگ استفاده کنید:

  • شما به تازگی استفاده از API را شروع کرده اید و داده های زیادی برای آپلود دارید.
  • شما باید متادیتا یا ویژگی‌هایی مانند قالب‌بندی را روی چندین شیء به‌روزرسانی کنید.
  • شما باید بسیاری از اشیاء را حذف کنید.

محدودیت ها، مجوزها، و ملاحظات وابستگی

در اینجا لیستی از موارد دیگری وجود دارد که باید هنگام به‌روزرسانی دسته‌ای در نظر بگیرید:

  • هر درخواست دسته‌ای، از جمله همه درخواست‌های فرعی، به عنوان یک درخواست API برای محدودیت استفاده شما محاسبه می‌شود.
  • درخواست دسته ای یک بار احراز هویت می شود. این احراز هویت واحد برای همه اشیاء به‌روزرسانی دسته‌ای در درخواست اعمال می‌شود.
  • سرور درخواست های فرعی را به همان ترتیبی که در درخواست دسته ای ظاهر می شوند پردازش می کند. درخواست‌های فرعی بعدی می‌تواند به اقدامات انجام شده در طول درخواست‌های فرعی قبلی بستگی داشته باشد. به عنوان مثال، در همان درخواست دسته ای، کاربران می توانند متنی را در یک سند موجود وارد کنند و سپس به آن استایل دهند.

جزئیات دسته

یک درخواست دسته ای شامل یک فراخوانی متد batchUpdate با چندین درخواست فرعی برای اضافه کردن و سپس فرمت کردن یک صفحه گسترده است.

هر درخواست قبل از اعمال تایید می شود. همه درخواست‌های فرعی در به‌روزرسانی دسته‌ای به صورت اتمی اعمال می‌شوند. یعنی اگر هر درخواستی معتبر نباشد، کل به روز رسانی ناموفق است و هیچ یک از تغییرات (بالقوه وابسته) اعمال نمی شود.

برخی از درخواست‌ها پاسخ‌هایی را با اطلاعات درخواست‌های اعمال شده ارائه می‌دهند. برای مثال، تمام درخواست‌های به‌روزرسانی دسته‌ای برای افزودن اشیا، پاسخ‌ها را برمی‌گردانند تا بتوانید به ابرداده‌های شی جدید اضافه‌شده، مانند شناسه یا عنوان دسترسی داشته باشید.

با این رویکرد، می‌توانید کل سند Google را با استفاده از یک درخواست به‌روزرسانی دسته‌ای API با چندین درخواست فرعی بسازید.

فرمت درخواست دسته ای

درخواست یک درخواست JSON منفرد است که شامل چندین درخواست فرعی تودرتو با یک ویژگی مورد نیاز است: requests . درخواست ها در آرایه ای از درخواست های فردی ساخته می شوند. هر درخواست از JSON برای نمایش شی درخواست و حاوی ویژگی های آن استفاده می کند.

قالب یک پاسخ دسته ای

فرمت پاسخ برای درخواست دسته ای مشابه فرمت درخواست است. پاسخ سرور حاوی یک پاسخ کامل از شیء پاسخ واحد است.

ویژگی اصلی شیء JSON replies نام دارد. پاسخ‌ها در یک آرایه برگردانده می‌شوند و هر پاسخ به یکی از درخواست‌ها همان ترتیب فهرست درخواست مربوطه را اشغال می‌کند. برخی از درخواست ها پاسخی ندارند و پاسخ در آن شاخص آرایه خالی است.

مثال

مثال زیر استفاده از دسته بندی با Sheets API را نشان می دهد.

درخواست

این درخواست دسته‌ای مثال نشان می‌دهد که چگونه:

  • با استفاده از AddSheetRequest ، یک برگه به ​​صفحه گسترده موجود با sheetId 12345 اضافه کنید.
  • با استفاده از UpdateCellsRequest ، داده ها را با سلول A1 به صفحه جدید اضافه کنید.
  • یک نمای 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
            }
         }
      }
   }
]