هنگام استفاده از API گوگل داکس، باید چندین اصل را رعایت کنید. این اصول عبارتند از:
- برای کارایی بیشتر، به عقب ویرایش کنید
- برنامهریزی برای همکاری
- با استفاده از فیلد
WriteControlاز ثبات وضعیت اطمینان حاصل کنید - تبها را در نظر بگیرید
بخشهای بعدی این اصول را توضیح میدهند.
برای کارایی بیشتر، به عقب ویرایش کنید
با یک بار فراخوانی متد documents.batchUpdate ، درخواستهای خود را به ترتیب نزولی از محل قرارگیری اندیس مرتب کنید. این کار نیاز به محاسبه تغییرات اندیس ناشی از درج و حذف را از بین میبرد.
برنامهریزی برای همکاری
انتظار میرود وضعیت سند تغییر کند. بین فراخوانی یک متد و متد دیگر، سایر همکاران ممکن است سند را بهروزرسانی کنند، همانطور که در نمودار زیر نشان داده شده است:
اگر شاخصهای شما اشتباه باشند، این میتواند منجر به خطا شود. با توجه به اینکه چندین کاربر با استفاده از رابط کاربری، یک سند را ویرایش میکنند، Google Docs این کار را به طور شفاف انجام میدهد. با این حال، به عنوان یک کلاینت API، برنامه شما باید این را مدیریت کند. حتی اگر انتظار همکاری در مورد سند را ندارید، مهم است که به صورت تدافعی برنامهریزی کنید و مطمئن شوید که وضعیت سند ثابت میماند. برای یک راه برای اطمینان از ثبات، بخش WriteControl را بررسی کنید.
ایجاد ثبات وضعیت با WriteControl
وقتی سندی را میخوانید و سپس آن را بهروزرسانی میکنید، میتوانید با استفاده از فیلد WriteControl در متد documents.batchUpdate ، نحوهی مدیریت تغییرات رقیب را کنترل کنید. WriteControl بر نحوهی اجرای درخواستهای نوشتن، اختیار عمل میدهد.
نحوه استفاده از آن به این صورت است:
- سند را با استفاده از متد
documents.getدریافت کنید وrevisionIdرا از منبعdocumentsبرگردانده شده ذخیره کنید. - درخواستهای بهروزرسانی خود را بنویسید.
- یک شیء
WriteControlاختیاری را با یکی از دو گزینه زیر وارد کنید:- فیلد
requiredRevisionIdبرابر باrevisionIdسندی است که درخواست نوشتن روی آن اعمال میشود. اگر سند از زمان درخواست خواندن API تغییر کرده باشد، درخواست نوشتن پردازش نمیشود و خطا برمیگرداند. - فیلد
targetRevisionIdبرابر باrevisionIdسندی است که درخواست نوشتن روی آن اعمال میشود. اگر سند از زمان درخواست خواندن API تغییر کرده باشد، تغییرات درخواست نوشتن روی تغییرات همکار اعمال میشود. نتیجه درخواست نوشتن، هم تغییرات درخواست نوشتن و هم تغییرات همکار را در یک نسخه جدید از سند لحاظ میکند. سرور Docs مسئول ادغام محتوا است.
- فیلد
برای مثالی از نحوه ساخت یک درخواست دستهای با استفاده از WriteControl ، به این مثال درخواست دستهای مراجعه کنید.
تبها را در نظر بگیرید
یک سند واحد میتواند شامل چندین تب باشد که نیاز به مدیریت خاصی در درخواستهای API شما دارند.
در اینجا چیزی است که باید به خاطر داشته باشید:
- برای بازیابی محتوا از تمام تبهای یک سند، پارامتر
includeTabsContentرا در متدdocuments.getرویtrueتنظیم کنید. به طور پیشفرض، محتوای همه تبها برگردانده نمیشود. - شناسه (ID) تب (tab) های مورد نظر برای اعمال هر
Requestرا در متدdocuments.batchUpdateمشخص کنید. هرRequestشامل روشی برای مشخص کردن تبهایی است که بهروزرسانی روی آنها اعمال میشود. به طور پیشفرض، اگر تبی مشخص نشده باشد،Requestدر بیشتر موارد روی اولین تب در سند اعمال میشود. برای جزئیات بیشتر به مستنداتRequestمراجعه کنید.