هوش مصنوعی در Google Docs؛ آموزش Gemini، نوشتن و اتصال API درواره

در این راهنما استفاده از هوش مصنوعی و Gemini در Google Docs را برای نوشتن، ویرایش، ترجمه و خلاصه‌سازی یاد می‌گیرید و با Google Apps Script یک دستیار متصل به API درواره می‌سازید.

Share
هوش مصنوعی در Google Docs؛ آموزش Gemini، نوشتن و اتصال API درواره

Google Docs یا گوگل داکس یکی از پرکاربردترین ابزارهای آنلاین برای نوشتن، ویرایش و همکاری روی اسناد است. اضافه‌شدن قابلیت‌های هوش مصنوعی باعث شده است بتوان بسیاری از کارهای زمان‌بر مانند ساخت پیش‌نویس، خلاصه‌سازی، بازنویسی، ترجمه و استخراج وظایف را مستقیماً هنگام کار روی سند انجام داد.

بعضی از این قابلیت‌ها از طریق Gemini در Google Workspace ارائه می‌شوند. بااین‌حال، دسترسی به Gemini در Google Docs به نوع حساب، اشتراک، تنظیمات مدیر سازمان، زبان و انتشار منطقه‌ای قابلیت‌ها بستگی دارد.

اگر قابلیت داخلی موردنظر در حساب شما وجود نداشته باشد یا بخواهید مدل و نحوه پردازش را خودتان انتخاب کنید، می‌توانید با Google Apps Script یک دستیار اختصاصی برای Google Docs بسازید و آن را به API هوش مصنوعی درواره متصل کنید.

در این آموزش، هر دو مسیر را بررسی می‌کنیم:

  • استفاده از قابلیت‌های آماده Gemini در Google Docs
  • ساخت دستیار اختصاصی Google Docs با API درواره

Google Docs چیست؟

Google Docs یک ویرایشگر متن آنلاین از مجموعه Google Workspace است. کاربران می‌توانند اسناد را در مرورگر ایجاد و ویرایش کنند، آن‌ها را با دیگران به اشتراک بگذارند و تغییرات را به‌صورت هم‌زمان مشاهده کنند.

مهم‌ترین قابلیت‌های Google Docs عبارت‌اند از:

  • نوشتن و قالب‌بندی متن
  • همکاری هم‌زمان چند کاربر
  • ثبت Comment و Suggestion
  • مشاهده تاریخچه تغییرات
  • ذخیره خودکار در Google Drive
  • واردکردن و خروجی‌گرفتن فایل Word
  • استفاده از Template
  • تایپ صوتی
  • افزودن افزونه
  • توسعه قابلیت‌های اختصاصی با Apps Script
  • استفاده از Gemini در نسخه‌ها و حساب‌های پشتیبانی‌شده

هوش مصنوعی در Google Docs چگونه کار می‌کند؟

هوش مصنوعی در Google Docs می‌تواند به چند شکل در دسترس باشد:

قابلیت داخلی Gemini

در حساب‌های پشتیبانی‌شده، Gemini داخل محیط Google Docs نمایش داده می‌شود و می‌تواند برای نوشتن، بازنویسی، خلاصه‌سازی و پاسخ‌گویی درباره سند استفاده شود.

قابلیت Help me write

این قابلیت برای ساخت پیش‌نویس و بازنویسی متن براساس دستور کاربر طراحی شده است. نام و محل نمایش آن ممکن است با تغییرات Google Workspace متفاوت باشد.

پنل کناری Gemini

در بعضی نسخه‌ها، کاربران می‌توانند پنل Gemini را از سمت صفحه باز کنند و درباره سند سؤال بپرسند یا از آن بخواهند محتوای جدیدی بسازد.

افزونه‌های Google Workspace

برخی سرویس‌های هوش مصنوعی به شکل Add-on در Google Workspace Marketplace منتشر می‌شوند و پس از نصب به Google Docs اضافه می‌شوند.

Google Apps Script

با Apps Script می‌توان منوی اختصاصی، پنجره، Sidebar یا گردش کار خودکار ساخت و Google Docs را به یک API خارجی متصل کرد.

طبق مستندات رسمی Google Apps Script، این پلتفرم مبتنی بر JavaScript برای خودکارسازی و توسعه قابلیت‌های Google Workspace طراحی شده است.

Gemini در Google Docs چه کارهایی انجام می‌دهد؟

قابلیت‌های دقیق ممکن است براساس حساب تغییر کنند، اما کاربردهای رایج Gemini در Google Docs شامل موارد زیر است:

  • ساخت پیش‌نویس از روی پرامپت
  • ادامه‌دادن متن
  • کوتاه یا مفصل‌کردن محتوا
  • بازنویسی با لحن متفاوت
  • خلاصه‌سازی سند
  • ساخت فهرست و جدول
  • پاسخ‌گویی درباره محتوای سند
  • استخراج نکات مهم
  • پیشنهاد عنوان و ساختار
  • تولید تصویر در نسخه‌های پشتیبانی‌شده
  • ساخت محتوای شخصی‌سازی‌شده
  • ارجاع به بعضی منابع موجود در Workspace
  • استفاده از Deep Research در نسخه‌های واجد شرایط

فهرست قابلیت‌های در حال عرضه را می‌توان در مرکز راهنمای Google Docs مشاهده کرد.

فعال‌کردن Gemini در Google Docs

اگر حساب شما به قابلیت‌های Gemini دسترسی داشته باشد، معمولاً آیکون Gemini یا گزینه‌هایی مانند Ask Gemini و Help me write در محیط Google Docs نمایش داده می‌شوند.

مراحل کلی:

  1. وارد حساب Google شوید.
  2. Google Docs را باز کنید.
  3. یک سند جدید یا موجود را انتخاب کنید.
  4. آیکون Gemini را در نوار بالایی یا پنل کناری پیدا کنید.
  5. روی آیکون کلیک کنید.
  6. پرامپت خود را بنویسید.
  7. خروجی را بررسی کنید.
  8. در صورت مناسب‌بودن، آن را وارد سند کنید.

اگر آیکون Gemini را مشاهده نمی‌کنید، این موارد را بررسی کنید:

  • نوع حساب شخصی یا Workspace
  • نوع اشتراک Google Workspace
  • تنظیمات مدیر سازمان
  • به‌روز بودن مرورگر
  • فعال‌بودن Smart Features
  • پشتیبانی زبان مورد استفاده
  • انتشار قابلیت برای حساب یا منطقه شما

وجود Gemini در حساب عمومی گوگل به معنی فعال‌بودن خودکار Gemini داخل Google Docs نیست.

تفاوت Gemini عمومی و Gemini داخل Google Docs

ویژگیGemini عمومیGemini در Google Docs
گفت‌وگوی عمومیبلهدر پنل کناری
دسترسی مستقیم به سند بازنیازمند بارگذاری یا انتقال متندر نسخه‌های پشتیبانی‌شده
درج مستقیم محتوا در سندخیربله
بازنویسی متن انتخاب‌شدهنیازمند کپی و جای‌گذاریبله
همکاری هم‌زمانخارج از سندداخل Google Docs
استفاده از فایل‌های Workspaceبراساس قابلیت حساببراساس سطح دسترسی و اشتراک
مناسب کار روزانه روی سندمتوسطزیاد
نیاز به انتقال دستی محتوامعمولاً بلهکمتر

هوش مصنوعی در Google Docs برای چه کسانی مناسب است؟

نویسندگان و تولیدکنندگان محتوا

برای طراحی ساختار مقاله، ساخت پیش‌نویس، بازنویسی، کوتاه‌کردن متن و استخراج عنوان قابل‌استفاده است.

کارشناسان بازاریابی

می‌توانند بریف کمپین، تقویم محتوا، متن لندینگ‌پیج، توضیحات محصول و گزارش کمپین تهیه کنند.

مدیران و کارشناسان سازمانی

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

فریلنسرها

فریلنسرها می‌توانند پیشنهاد پروژه، شرح خدمات، برنامه تحویل و گزارش پیشرفت را سریع‌تر آماده کنند.

برنامه‌نویسان و تیم‌های محصول

برای نوشتن مستندات، شرح قابلیت‌ها، گزارش انتشار و تبدیل یادداشت‌های فنی به متن منظم مناسب است.

پژوهشگران

هوش مصنوعی می‌تواند در ساخت ساختار، خلاصه‌سازی یادداشت‌ها و مقایسه اطلاعات کمک کند؛ اما اعتبار منابع و صحت نتیجه باید جداگانه بررسی شود.

آموزش نوشتن متن با Gemini در Google Docs

برای تولید پیش‌نویس جدید، یک سند خالی باز و قابلیت Gemini یا Help me write را انتخاب کنید.

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

یک مقاله درباره هوش مصنوعی بنویس.

درخواست دقیق‌تری بنویسید:

یک پیش‌نویس آموزشی درباره کاربرد هوش مصنوعی در فروشگاه‌های اینترنتی بنویس.

مخاطب:
مدیران فروشگاه‌های کوچک و متوسط

هدف:
معرفی کاربردهای واقعی و قابل‌اجرا

ساختار:
- مقدمه
- پنج کاربرد اصلی
- مراحل شروع
- اشتباهات رایج
- چک‌لیست اجرا
- جمع‌بندی

لحن:
حرفه‌ای، روشن و کاربردی

محدودیت:
از ارائه آمار بدون منبع و وعده قطعی خودداری کن.

هرچه هدف، مخاطب و قالب خروجی واضح‌تر باشد، پیش‌نویس اولیه کاربردی‌تر خواهد بود.

ساخت مقاله در Google Docs با هوش مصنوعی

تولید یک مقاله کامل با یک پرامپت معمولاً بهترین نتیجه را ایجاد نمی‌کند. بهتر است فرایند را به چند مرحله تقسیم کنید.

مرحله اول: تعیین هدف جست‌وجو

برای کلمه کلیدی «[کلمه کلیدی]» نیت جست‌وجوی احتمالی کاربر را تحلیل کن.

خروجی:
- مسئله اصلی کاربر
- پرسش‌های فرعی
- سطح دانش مخاطب
- نوع محتوای مناسب
- اقدام مورد انتظار پس از مطالعه

مرحله دوم: ساخت بریف محتوا

برای موضوع «[موضوع]» یک بریف محتوایی بساز.

اطلاعات:
- مخاطب هدف: [مخاطب]
- هدف محتوا: [هدف]
- محصول مرتبط: [محصول]
- لحن: آموزشی و حرفه‌ای

خروجی:
- عنوان پیشنهادی
- زاویه اصلی مقاله
- پرسش‌های مخاطب
- ساختار تیترها
- مثال‌های موردنیاز
- پیشنهاد CTA

مرحله سوم: طراحی ساختار

براساس بریف این سند، ساختار مقاله را طراحی کن.

قواعد:
- فقط یک عنوان اصلی وجود داشته باشد.
- تیترها ترتیب منطقی داشته باشند.
- بخش‌های تکراری ادغام شوند.
- آموزش عملی و مثال در ساختار قرار بگیرد.
- بخش پرسش‌های متداول در پایان اضافه شود.

مرحله چهارم: نوشتن هر بخش

بخش «[نام بخش]» را در حدود ۵۰۰ کلمه بنویس.

مخاطب:
کاربری با دانش متوسط

الزامات:
- توضیح روشن ارائه شود.
- حداقل یک مثال عملی وجود داشته باشد.
- جمله‌های کلی و تبلیغاتی حذف شوند.
- اطلاعات خارج از منابع این سند اضافه نشوند.

مرحله پنجم: ویرایش نهایی

این مقاله را از نظر نگارشی و ساختاری ویرایش کن.

موارد بررسی:
- انسجام میان بخش‌ها
- حذف تکرار
- کوتاه‌شدن جمله‌های پیچیده
- یکسان‌سازی اصطلاحات
- اصلاح تیترها
- حفظ لحن فارسی
- مشخص‌کردن ادعاهای نیازمند منبع

معنای اصلی و اطلاعات عددی را تغییر نده.

خلاصه‌سازی متن در Google Docs

نوع خلاصه باید متناسب با مخاطب انتخاب شود.

خلاصه مدیریتی

این سند را برای مدیرعامل خلاصه کن.

خروجی:
- موضوع اصلی
- وضعیت فعلی
- مهم‌ترین یافته‌ها
- موانع
- تصمیم موردنیاز
- اقدامات بعدی

حداکثر ۲۵۰ کلمه.
هیچ اطلاعاتی خارج از سند اضافه نکن.

خلاصه آموزشی

این سند را به یک خلاصه آموزشی تبدیل کن.

ساختار:
- تعریف موضوع
- مفاهیم کلیدی
- مراحل اجرا
- مثال
- نکات مهم
- چک‌لیست مرور

خلاصه جلسه

از یادداشت‌های این جلسه یک خلاصه ساختاریافته تهیه کن.

بخش‌ها:
- هدف جلسه
- موضوعات مطرح‌شده
- تصمیم‌های قطعی
- پیشنهادها
- وظایف
- مسئول هر وظیفه
- مهلت
- پرسش‌های حل‌نشده

بین پیشنهاد و تصمیم قطعی تفاوت قائل شو.

خلاصه بسیار کوتاه

این سند را در پنج بولت خلاصه کن.
هر بولت حداکثر ۲۰ کلمه باشد.

بازنویسی و ویرایش متن فارسی

هوش مصنوعی می‌تواند متن را روان‌تر کند، اما باید مشخص کنید چه چیزهایی نباید تغییر کنند.

بازنویسی حرفه‌ای

متن انتخاب‌شده را به فارسی روان و حرفه‌ای بازنویسی کن.

قواعد:
- مفهوم تغییر نکند.
- اطلاعات جدید اضافه نشود.
- جمله‌های بلند کوتاه شوند.
- لحن رسمی باقی بماند.
- نام برندها و اعداد تغییر نکنند.

ساده‌سازی متن

این متن را برای مخاطب عمومی ساده‌سازی کن.

اصطلاحات تخصصی ضروری را حذف نکن؛ آن‌ها را با یک توضیح کوتاه بیان کن.

رسمی‌کردن متن

این متن را برای ارسال به مدیران یک سازمان بازنویسی کن.

لحن:
- محترمانه
- حرفه‌ای
- مستقیم
- غیراغراق‌آمیز

طول متن بیشتر نشود.

کوتاه‌کردن متن

این متن را ۳۰ درصد کوتاه‌تر کن.
پیام اصلی، اعداد، نام‌ها و CTA حفظ شوند.

رفع ترجمه تحت‌اللفظی

این متن فارسی از زبان انگلیسی ترجمه شده است.
آن را به فارسی طبیعی و روان بازنویسی کن، بدون اینکه مفهوم تغییر کند.

ساختار انگلیسی جمله‌ها را به ساختار طبیعی فارسی تبدیل کن.

ترجمه در Google Docs با هوش مصنوعی

Google Docs قابلیت ترجمه سند دارد، اما برای کنترل بیشتر بر لحن و اصطلاحات می‌توان از پرامپت دقیق استفاده کرد.

ترجمه عمومی

این متن را به فارسی روان و حرفه‌ای ترجمه کن.

قواعد:
- ترجمه تحت‌اللفظی نباشد.
- تیترها و فهرست‌ها حفظ شوند.
- نام برندها تغییر نکنند.
- اعداد و واحدها دقیق باقی بمانند.

ترجمه متن فنی

این متن فنی را به فارسی روان ترجمه کن.

قواعد اصطلاحات:
- API را API بنویس.
- Prompt را «پرامپت (Prompt)» بنویس.
- Token را «توکن (Token)» بنویس.
- Fine-tuning را «فاین‌تیونینگ (Fine-tuning)» بنویس.
- نام کلاس‌ها، تابع‌ها، endpointها و متغیرها را ترجمه نکن.
- کدها بدون تغییر باقی بمانند.

ترجمه بازاریابی

این متن را برای مخاطب فارسی‌زبان ترجمه و بومی‌سازی کن.

پیام اصلی، ویژگی‌های محصول و CTA حفظ شوند.
اصطلاحات نامأنوس با عبارت‌های طبیعی فارسی جایگزین شوند.
اطلاعات یا وعده جدید جدید اضافه نکن.

استخراج اطلاعات از سند

یکی از کاربردهای مفید هوش مصنوعی، تبدیل متن بدون ساختار به اطلاعات منظم است.

استخراج وظایف

تمام وظایف قابل‌اجرا را از این سند استخراج کن.

خروجی را به شکل جدول ارائه بده:
- وظیفه
- مسئول
- مهلت
- اولویت
- وابستگی
- وضعیت

اگر اطلاعاتی وجود ندارد، «مشخص نشده» بنویس.

استخراج نام‌ها و تاریخ‌ها

تمام نام افراد، شرکت‌ها، محصولات و تاریخ‌های موجود در این سند را استخراج کن.

برای هر مورد، جمله یا بخش مرتبط را نیز ذکر کن.
هیچ موردی را براساس حدس اضافه نکن.

استخراج تصمیم‌ها

فقط تصمیم‌های قطعی این سند را استخراج کن.

پیشنهادها، احتمال‌ها، سؤال‌ها و نظرهای شخصی را به‌عنوان تصمیم ثبت نکن.

تبدیل متن به جدول

اطلاعات این بخش را به جدول تبدیل کن.

ستون‌ها:
- موضوع
- شرح
- مسئول
- تاریخ
- وضعیت
- منبع

مقایسه اطلاعات در Google Docs

اگر چند پیشنهاد، برنامه یا نسخه در یک سند وجود دارد، می‌توانید مقایسه ساختاریافته ایجاد کنید.

گزینه اول و گزینه دوم را فقط براساس اطلاعات این سند مقایسه کن.

معیارها:
- هزینه
- زمان اجرا
- منابع موردنیاز
- مزایا
- محدودیت‌ها
- وابستگی‌ها
- ریسک‌های ذکرشده

برای اطلاعات ناموجود از عبارت «اطلاعات موجود نیست» استفاده کن.

در پایان می‌توانید درخواست کنید:

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

استفاده از هوش مصنوعی برای همکاری تیمی در Google Docs

Google Docs امکان Comment، Suggesting و Version History دارد. بهتر است خروجی هوش مصنوعی نیز وارد همین فرایند بازبینی شود.

یک گردش کار مناسب:

  1. نویسنده پیش‌نویس اولیه را تهیه می‌کند.
  2. هوش مصنوعی ساختار و نگارش را بررسی می‌کند.
  3. تغییرات در حالت Suggesting اعمال می‌شوند.
  4. ویراستار پیشنهادها را بررسی می‌کند.
  5. ادعاها و منابع کنترل می‌شوند.
  6. مالک سند نسخه نهایی را تأیید می‌کند.
  7. نسخه تأییدشده نام‌گذاری می‌شود.

برای درخواست بازبینی:

این سند را ویرایش نکن.
فقط پیشنهادهای اصلاحی را در دسته‌های زیر ارائه بده:

- ابهام
- تکرار
- ادعای نیازمند منبع
- جمله پیچیده
- ناسازگاری اصطلاحات
- مشکل ساختاری

برای هر پیشنهاد، بخش مرتبط را مشخص کن.

محدودیت‌های هوش مصنوعی در Google Docs

احتمال تولید اطلاعات نادرست

مدل ممکن است اطلاعاتی را اضافه کند که در سند یا منبع وجود ندارد.

تغییر ناخواسته معنا

بازنویسی می‌تواند شدت، قطعیت یا منظور جمله را تغییر دهد.

ضعف در پردازش سند نامنظم

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

محدودیت دسترسی

برخی قابلیت‌ها فقط در حساب‌ها، زبان‌ها یا اشتراک‌های خاص فعال هستند.

محدودیت طول و زمینه

سندهای بسیار طولانی ممکن است به‌طور کامل یا با جزئیات یکسان پردازش نشوند.

نیاز به بازبینی انسانی

خروجی هوش مصنوعی باید پیش از انتشار، ارسال یا تصمیم‌گیری بررسی شود.

چرا Google Docs را به API درواره متصل کنیم؟

قابلیت داخلی Gemini برای بسیاری از کاربران کافی است، اما اتصال اختصاصی به API مزایای متفاوتی دارد.

با API درواره می‌توانید:

  • Model ID مناسب را خودتان انتخاب کنید.
  • پرامپت ثابت سازمانی بسازید.
  • خروجی‌ها را با قالب یکسان تولید کنید.
  • چند عملیات اختصاصی به منوی Google Docs اضافه کنید.
  • متن انتخاب‌شده را بدون کپی‌کردن پردازش کنید.
  • گردش کار فارسی اختصاصی بسازید.
  • پردازش را به سامانه‌های دیگر متصل کنید.
  • از یک API یکپارچه برای مدل‌های مختلف استفاده کنید.
  • ابزار داخلی مخصوص تیم خود ایجاد کنید.

درواره جایگزین Google Docs نیست. درواره زیرساخت API هوش مصنوعی را فراهم می‌کند و Google Docs محیط نوشتن و همکاری تیمی باقی می‌ماند.

پروژه عملی: اتصال Google Docs به API درواره

در این پروژه، یک منوی جدید با نام «دستیار درواره» به Google Docs اضافه می‌کنیم.

این منو سه عملیات انجام می‌دهد:

  • خلاصه‌سازی متن انتخاب‌شده
  • بازنویسی حرفه‌ای متن انتخاب‌شده
  • استخراج اقدام‌ها از متن انتخاب‌شده

نتیجه در انتهای سند قرار می‌گیرد.

پیش‌نیازها

برای اجرای پروژه به موارد زیر نیاز دارید:

  • حساب Google
  • یک سند Google Docs
  • کلید API درواره
  • Model ID از درواره
  • دسترسی به Google Apps Script

آدرس پایه API درواره:

https://api.darvareh.ir/v1

برای مشاهده مدل‌ها، Model ID و اطلاعات به‌روز قیمت، صفحه مدل‌های درواره را ببینید.

مرحله اول: بازکردن Apps Script

  1. یک سند Google Docs ایجاد کنید.
  2. از منوی بالای صفحه وارد Extensions شوید.
  3. گزینه Apps Script را انتخاب کنید.
  4. یک پروژه متصل به سند باز می‌شود.
  5. نام پروژه را مثلاً Darvareh Docs Assistant قرار دهید.

طبق راهنمای رسمی توسعه Google Docs با Apps Script، اسکریپت متصل به سند می‌تواند منوی اختصاصی ایجاد کند و با رویداد onOpen هنگام بازشدن سند اجرا شود.

مرحله دوم: قراردادن کد دستیار درواره

محتوای فایل Code.gs را با کد زیر جایگزین کنید:

const DARVAREH_API_URL =
  "https://api.darvareh.ir/v1/chat/completions";

function onOpen() {
  DocumentApp.getUi()
    .createMenu("دستیار درواره")
    .addItem("تنظیم API", "setupDarvareh")
    .addSeparator()
    .addItem("خلاصه‌سازی متن انتخاب‌شده", "summarizeSelection")
    .addItem("بازنویسی حرفه‌ای", "rewriteSelection")
    .addItem("استخراج اقدام‌ها", "extractActions")
    .addSeparator()
    .addItem("حذف تنظیمات API", "clearDarvarehSettings")
    .addToUi();
}

function setupDarvareh() {
  const ui = DocumentApp.getUi();
  const properties = PropertiesService.getUserProperties();

  const keyResponse = ui.prompt(
    "تنظیم کلید API درواره",
    "کلید API درواره را وارد کنید:",
    ui.ButtonSet.OK_CANCEL
  );

  if (keyResponse.getSelectedButton() !== ui.Button.OK) {
    return;
  }

  const apiKey = keyResponse.getResponseText().trim();

  if (!apiKey) {
    ui.alert("کلید API نمی‌تواند خالی باشد.");
    return;
  }

  const modelResponse = ui.prompt(
    "تنظیم Model ID",
    "Model ID موردنظر را از صفحه مدل‌های درواره وارد کنید:",
    ui.ButtonSet.OK_CANCEL
  );

  if (modelResponse.getSelectedButton() !== ui.Button.OK) {
    return;
  }

  const modelId = modelResponse.getResponseText().trim();

  if (!modelId) {
    ui.alert("Model ID نمی‌تواند خالی باشد.");
    return;
  }

  properties.setProperties({
    DARVAREH_API_KEY: apiKey,
    DARVAREH_MODEL_ID: modelId,
  });

  ui.alert("تنظیمات درواره برای حساب شما ذخیره شد.");
}

function summarizeSelection() {
  processSelection(
    [
      "متن زیر را به فارسی روان خلاصه کن.",
      "",
      "قالب خروجی:",
      "- موضوع اصلی",
      "- نکات کلیدی",
      "- نتیجه",
      "- اقدامات بعدی، فقط اگر در متن وجود دارند",
      "",
      "اطلاعات جدید اضافه نکن.",
    ].join("\n"),
    "خلاصه تولیدشده با درواره"
  );
}

function rewriteSelection() {
  processSelection(
    [
      "متن زیر را به فارسی روان و حرفه‌ای بازنویسی کن.",
      "",
      "قواعد:",
      "- مفهوم اصلی تغییر نکند.",
      "- اطلاعات جدید اضافه نشود.",
      "- اعداد و نام‌ها تغییر نکنند.",
      "- جمله‌های طولانی کوتاه شوند.",
      "- لحن رسمی و طبیعی باشد.",
      "",
      "فقط متن بازنویسی‌شده را برگردان.",
    ].join("\n"),
    "نسخه بازنویسی‌شده با درواره"
  );
}

function extractActions() {
  processSelection(
    [
      "از متن زیر تمام اقدام‌های قابل‌اجرا را استخراج کن.",
      "",
      "برای هر اقدام بنویس:",
      "- عنوان وظیفه",
      "- مسئول",
      "- مهلت",
      "- اولویت",
      "",
      "اگر مسئول یا مهلت مشخص نشده است،",
      "عبارت «مشخص نشده» را بنویس.",
      "هیچ اطلاعاتی را حدس نزن.",
    ].join("\n"),
    "اقدام‌های استخراج‌شده با درواره"
  );
}

function processSelection(instruction, outputTitle) {
  const ui = DocumentApp.getUi();

  try {
    const selectedText = getSelectedText();

    if (!selectedText) {
      ui.alert(
        "ابتدا بخشی از متن سند را انتخاب کنید و دوباره فرمان را اجرا کنید."
      );
      return;
    }

    if (selectedText.length > 30000) {
      ui.alert(
        "متن انتخاب‌شده بسیار طولانی است. آن را به بخش‌های کوچک‌تر تقسیم کنید."
      );
      return;
    }

    const output = callDarvareh(instruction, selectedText);
    appendOutput(outputTitle, output);

    ui.alert("خروجی در انتهای سند اضافه شد.");
  } catch (error) {
    ui.alert("خطا: " + error.message);
  }
}

function getSelectedText() {
  const document = DocumentApp.getActiveDocument();
  const selection = document.getSelection();

  if (!selection) {
    return "";
  }

  const parts = [];

  selection.getRangeElements().forEach(function (rangeElement) {
    const element = rangeElement.getElement();

    if (!element.editAsText) {
      return;
    }

    const textElement = element.editAsText();
    const fullText = textElement.getText();

    if (rangeElement.isPartial()) {
      const start = rangeElement.getStartOffset();
      const end = rangeElement.getEndOffsetInclusive();
      parts.push(fullText.substring(start, end + 1));
    } else {
      parts.push(fullText);
    }
  });

  return parts.join("\n").trim();
}

function callDarvareh(instruction, selectedText) {
  const properties = PropertiesService.getUserProperties();
  const apiKey = properties.getProperty("DARVAREH_API_KEY");
  const modelId = properties.getProperty("DARVAREH_MODEL_ID");

  if (!apiKey || !modelId) {
    throw new Error(
      "ابتدا از منوی «دستیار درواره» گزینه «تنظیم API» را اجرا کنید."
    );
  }

  const payload = {
    model: modelId,
    messages: [
      {
        role: "system",
        content:
          "شما یک دستیار حرفه‌ای فارسی‌زبان برای پردازش اسناد هستید.",
      },
      {
        role: "user",
        content:
          instruction +
          "\n\nمتن ورودی:\n" +
          selectedText,
      },
    ],
    temperature: 0.2,
  };

  const response = UrlFetchApp.fetch(DARVAREH_API_URL, {
    method: "post",
    contentType: "application/json",
    headers: {
      Authorization: "Bearer " + apiKey,
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true,
  });

  const statusCode = response.getResponseCode();
  const responseText = response.getContentText("UTF-8");

  if (statusCode < 200 || statusCode >= 300) {
    throw new Error(
      "API درواره با کد " +
      statusCode +
      " پاسخ داد: " +
      responseText.slice(0, 500)
    );
  }

  const data = JSON.parse(responseText);
  const content =
    data &&
    data.choices &&
    data.choices[0] &&
    data.choices[0].message &&
    data.choices[0].message.content;

  if (!content) {
    throw new Error("پاسخ قابل‌استفاده‌ای از API دریافت نشد.");
  }

  return content.trim();
}

function appendOutput(title, content) {
  const document = DocumentApp.getActiveDocument();
  const body = document.getBody();

  body.appendParagraph("");
  body
    .appendParagraph(title)
    .setHeading(DocumentApp.ParagraphHeading.HEADING2);

  body.appendParagraph(content);
}

function clearDarvarehSettings() {
  const ui = DocumentApp.getUi();
  const properties = PropertiesService.getUserProperties();

  const response = ui.alert(
    "حذف تنظیمات",
    "آیا می‌خواهید کلید API و Model ID ذخیره‌شده حذف شوند؟",
    ui.ButtonSet.YES_NO
  );

  if (response !== ui.Button.YES) {
    return;
  }

  properties.deleteProperty("DARVAREH_API_KEY");
  properties.deleteProperty("DARVAREH_MODEL_ID");

  ui.alert("تنظیمات API حذف شد.");
}

مرحله سوم: ذخیره و اجرای اسکریپت

  1. روی دکمه Save کلیک کنید.
  2. از فهرست توابع، onOpen را انتخاب کنید.
  3. روی Run کلیک کنید.
  4. در اولین اجرا، Google درخواست دسترسی نمایش می‌دهد.
  5. دسترسی‌های موردنیاز را بررسی و تأیید کنید.
  6. به سند Google Docs بازگردید.
  7. صفحه را Refresh کنید.

پس از بارگذاری مجدد، منوی «دستیار درواره» باید در نوار بالای Google Docs ظاهر شود.

مرحله چهارم: تنظیم API

  1. منوی «دستیار درواره» را باز کنید.
  2. گزینه «تنظیم API» را انتخاب کنید.
  3. کلید API درواره را وارد کنید.
  4. Model ID موردنظر را وارد کنید.
  5. تنظیمات در User Properties حساب شما ذخیره می‌شوند.

در این پروژه، Model ID در کد ثابت نشده است. برای انتخاب مدل، صفحه مدل‌های درواره را بررسی کنید.

مرحله پنجم: استفاده از دستیار

  1. بخشی از متن سند را انتخاب کنید.
  2. منوی «دستیار درواره» را باز کنید.
  3. یکی از عملیات را انتخاب کنید.
  4. متن انتخاب‌شده به API درواره ارسال می‌شود.
  5. خروجی در انتهای سند قرار می‌گیرد.

برای مثال، اگر این متن را انتخاب کنید:

در جلسه امروز مقرر شد نسخه آزمایشی داشبورد تا سه‌شنبه آماده شود.
سارا مسئول بازبینی متن راهنما است.
اتصال سیستم ایمیل هنوز تکمیل نشده و ممکن است انتشار را به تأخیر بیندازد.

و گزینه «استخراج اقدام‌ها» را اجرا کنید، دستیار باید مواردی مانند آماده‌سازی نسخه آزمایشی و بازبینی متن راهنما را استخراج کند. اگر مسئول آماده‌سازی داشبورد در متن مشخص نشده باشد، نباید نامی برای آن حدس بزند.

کد چگونه کار می‌کند؟

تابع onOpen

هنگام بازشدن سند، منوی «دستیار درواره» را به Google Docs اضافه می‌کند.

تابع setupDarvareh

کلید API و Model ID را از کاربر دریافت و در User Properties ذخیره می‌کند.

تابع getSelectedText

متنی را که کاربر در سند انتخاب کرده است استخراج می‌کند. این تابع انتخاب کامل یا جزئی یک پاراگراف را پردازش می‌کند.

تابع callDarvareh

یک درخواست سازگار با Chat Completions به API درواره ارسال می‌کند.

تابع appendOutput

خروجی مدل را همراه با یک عنوان در انتهای سند قرار می‌دهد.

تابع clearDarvarehSettings

کلید API و Model ID ذخیره‌شده را حذف می‌کند.

استفاده از UrlFetchApp

در این پروژه از UrlFetchApp.fetch برای ارسال درخواست HTTPS استفاده شده است. طبق مستندات رسمی UrlFetchApp، این سرویس به اسکریپت اجازه می‌دهد با سرویس‌های خارجی ارتباط برقرار کند.

در اولین اجرا، Apps Script برای دسترسی به سرویس خارجی از کاربر مجوز می‌خواهد.

چگونه قابلیت‌های بیشتری اضافه کنیم؟

می‌توانید دستورات جدیدی به منوی دستیار اضافه کنید.

ترجمه فارسی

به تابع onOpen این گزینه را اضافه کنید:

.addItem("ترجمه به فارسی", "translateToPersian")

سپس تابع زیر را اضافه کنید:

function translateToPersian() {
  processSelection(
    [
      "متن زیر را به فارسی روان و حرفه‌ای ترجمه کن.",
      "",
      "قواعد:",
      "- ترجمه تحت‌اللفظی نباشد.",
      "- نام برندها تغییر نکنند.",
      "- کدها، URLها و نام متغیرها تغییر نکنند.",
      "- ساختار تیترها و فهرست‌ها حفظ شود.",
      "",
      "فقط ترجمه نهایی را برگردان.",
    ].join("\n"),
    "ترجمه فارسی با درواره"
  );
}

تولید عنوان

function generateTitles() {
  processSelection(
    [
      "برای متن زیر ۱۰ عنوان فارسی پیشنهاد بده.",
      "",
      "قواعد:",
      "- عنوان‌ها روشن و طبیعی باشند.",
      "- از کلیک‌بیت گمراه‌کننده استفاده نشود.",
      "- هر عنوان حداکثر ۷۰ کاراکتر باشد.",
      "- عنوان‌ها تکراری نباشند.",
    ].join("\n"),
    "عنوان‌های پیشنهادی درواره"
  );
}

استخراج پرسش‌های متداول

function generateFaq() {
  processSelection(
    [
      "براساس متن زیر پرسش‌های متداول واقعی تهیه کن.",
      "",
      "برای هر پرسش یک پاسخ کوتاه و دقیق بنویس.",
      "فقط از اطلاعات موجود در متن استفاده کن.",
      "موارد نامشخص را به‌عنوان واقعیت بیان نکن.",
    ].join("\n"),
    "پرسش‌های متداول تولیدشده با درواره"
  );
}

فراموش نکنید هر تابع جدید را نیز با addItem به منوی onOpen اضافه کنید.

بهبود امنیت و پایداری پروژه

نمونه ارائه‌شده برای آموزش و استفاده شخصی یا تیم کوچک مناسب است. برای استفاده گسترده‌تر این موارد را در نظر بگیرید:

کلید API را در سند قرار ندهید

کلید API نباید داخل متن سند، Comment، کد عمومی یا مخزن Git قرار گیرد.

دسترسی اسکریپت را بررسی کنید

پیش از تأیید مجوزها، Scopeهای درخواستی را بررسی کنید.

ورودی را محدود کنید

ارسال کل یک سند طولانی می‌تواند زمان، هزینه و احتمال خطا را افزایش دهد. متن را به بخش‌های منطقی تقسیم کنید.

مدیریت خطا داشته باشید

کد باید خطاهای HTTP، پاسخ خالی، JSON نامعتبر و تنظیمات ناقص را مدیریت کند.

خروجی را مستقیم جایگزین نکنید

بهتر است ابتدا خروجی در بخش جداگانه قرار گیرد تا کاربر آن را بررسی کند.

برای تیم‌ها ساختار دسترسی تعریف کنید

اگر پروژه به Add-on سازمانی تبدیل می‌شود، مدیریت کلید، سطح دسترسی، ثبت مصرف و سیاست‌های استفاده باید متمرکز شوند.

ساخت نسخه حرفه‌ای با Sidebar

برای پروژه‌های بزرگ‌تر می‌توانید به‌جای Promptهای ساده، یک Sidebar بسازید که شامل این گزینه‌ها باشد:

  • انتخاب عملیات
  • انتخاب لحن
  • تعیین طول خروجی
  • واردکردن پرامپت اختصاصی
  • انتخاب Model ID
  • مشاهده پیش‌نمایش
  • درج خروجی در محل Cursor
  • جایگزینی متن با تأیید کاربر
  • ذخیره Templateهای پرامپت

طبق مستندات Google Apps Script، امکان افزودن Dialog و Sidebar به Google Docs وجود دارد. برای توسعه محصول عمومی نیز می‌توان اسکریپت را به یک Google Workspace Add-on تبدیل کرد.

Gemini داخلی یا API درواره؟

نیازGemini در Google DocsAPI درواره با Apps Script
راه‌اندازی سریعبسیار مناسبنیازمند تنظیم اولیه
استفاده بدون کدنویسیبلهخیر، مگر ابزار از قبل ساخته شود
پردازش متن انتخاب‌شدهبلهبله
انتخاب Model IDمحدود به قابلیت محصولبله
پرامپت سازمانی ثابتمحدودبله
ساخت عملیات سفارشیمحدودبله
اتصال به سیستم‌های دیگرمحدود به اکوسیستمقابل‌توسعه
کنترل رابط کاربریمحدودقابل‌توسعه
مناسب کاربر عمومیبلهپس از آماده‌سازی ابزار
مناسب توسعه‌دهندهمتوسطزیاد

ممکن است بهترین راهکار استفاده ترکیبی باشد: Gemini برای کارهای روزانه و API درواره برای فرایندهای استاندارد، اختصاصی یا متصل به سایر سامانه‌ها.

اشتباهات رایج در استفاده از هوش مصنوعی در Google Docs

تولید کل سند با یک پرامپت

تقسیم فرایند به بریف، ساختار، نگارش و ویرایش معمولاً نتیجه بهتری ایجاد می‌کند.

درخواست بازنویسی بدون محدودیت

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

جایگزینی مستقیم متن اصلی

ابتدا خروجی را در بخشی جداگانه یا حالت Suggesting بررسی کنید.

استفاده از سند نامنظم

عنوان‌ها، بخش‌ها، نام فایل و نسخه سند را منظم نگه دارید.

ارسال متن بیش‌ازحد طولانی

متن طولانی را براساس تیتر یا پاراگراف به Chunkهای منطقی تقسیم کنید.

قراردادن کلید در کد عمومی

کلید API را در مخزن عمومی یا نمونه کد منتشر نکنید.

اعتماد کامل به خلاصه

خلاصه ممکن است بعضی جزئیات، شرط‌ها یا استثناهای مهم را حذف کند.

بی‌توجهی به هدف مخاطب

یک خلاصه برای مدیرعامل با خلاصه آموزشی یا فنی یکسان نیست.

چک‌لیست استفاده حرفه‌ای

  • هدف سند مشخص شده است.
  • مخاطب خروجی تعریف شده است.
  • پرامپت شامل قالب و محدودیت است.
  • متن اصلی پیش از پردازش ذخیره شده است.
  • اعداد و نام‌ها پس از بازنویسی بررسی می‌شوند.
  • ادعاهای مهم دارای منبع هستند.
  • پیشنهاد و تصمیم از یکدیگر تفکیک می‌شوند.
  • خروجی هوش مصنوعی قبل از انتشار بازبینی می‌شود.
  • کلید API در متن سند قرار نمی‌گیرد.
  • Model ID از صفحه مدل‌های درواره انتخاب می‌شود.
  • متن‌های طولانی به بخش‌های منطقی تقسیم می‌شوند.
  • خطاهای API در اسکریپت مدیریت می‌شوند.
  • دسترسی‌های Apps Script بررسی می‌شوند.
  • برای تیم‌ها Templateهای پرامپت یکسان تعریف می‌شوند.

پرسش‌های متداول

آیا Google Docs هوش مصنوعی دارد؟

بله. در حساب‌ها و نسخه‌های پشتیبانی‌شده، قابلیت‌های Gemini برای نوشتن، ویرایش، خلاصه‌سازی و پاسخ‌گویی درباره سند ارائه می‌شوند.

چرا Gemini در Google Docs من نمایش داده نمی‌شود؟

نوع حساب، اشتراک، تنظیمات مدیر Workspace، زبان، منطقه و انتشار تدریجی قابلیت‌ها می‌توانند روی دسترسی اثر بگذارند.

آیا هوش مصنوعی Google Docs رایگان است؟

بعضی قابلیت‌ها ممکن است در حساب‌های واجد شرایط ارائه شوند و بعضی دیگر به طرح‌های مشخص Google Workspace وابسته باشند. برای اطلاعات به‌روز باید صفحه رسمی طرح‌های گوگل بررسی شود.

آیا Gemini در Google Docs فارسی را پشتیبانی می‌کند؟

امکان پردازش بسیاری از درخواست‌های فارسی وجود دارد، اما کیفیت و دسترسی قابلیت‌ها ممکن است براساس زبان و نوع حساب متفاوت باشد.

آیا می‌توان Google Docs را به API هوش مصنوعی متصل کرد؟

بله. با Google Apps Script و سرویس UrlFetchApp می‌توان درخواست HTTP به API هوش مصنوعی ارسال کرد.

آدرس API درواره چیست؟

Base URL درواره به شکل زیر است:

https://api.darvareh.ir/v1

برای Chat Completions می‌توان از این endpoint استفاده کرد:

https://api.darvareh.ir/v1/chat/completions

Model ID را از کجا پیدا کنیم؟

Model ID و اطلاعات به‌روز مدل‌ها در صفحه مدل‌های درواره قرار می‌گیرند.

آیا می‌توان متن انتخاب‌شده را مستقیماً جایگزین کرد؟

از نظر فنی امکان‌پذیر است، اما برای جلوگیری از حذف یا تغییر ناخواسته محتوا بهتر است ابتدا خروجی در بخش جداگانه قرار گیرد.

آیا می‌توان این اسکریپت را برای اعضای تیم منتشر کرد؟

بله. برای تیم کوچک می‌توان اسکریپت را در سند مشترک استفاده کرد. برای انتشار گسترده‌تر بهتر است آن را به Add-on سازمانی یا عمومی تبدیل کنید و مدیریت دسترسی و کلیدها را جدی‌تر در نظر بگیرید.

آیا Apps Script رایگان است؟

Apps Script همراه با حساب‌های گوگل در دسترس است، اما دارای سهمیه‌ها و محدودیت‌های اجرایی است. مقدار سهمیه می‌تواند براساس نوع حساب تغییر کند.

آیا خروجی هوش مصنوعی به‌طور خودکار صحیح است؟

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

جمع‌بندی

هوش مصنوعی می‌تواند Google Docs را از یک ویرایشگر متن ساده به محیطی برای تولید، خلاصه‌سازی، ترجمه و پردازش ساختاریافته محتوا تبدیل کند.

اگر حساب شما به Gemini در Google Docs دسترسی دارد، می‌توانید بدون برنامه‌نویسی از قابلیت‌های آماده آن استفاده کنید. برای گرفتن نتیجه بهتر، پرامپت باید هدف، مخاطب، منبع، قالب خروجی و محدودیت‌ها را مشخص کند.

اگر به انتخاب مدل، پرامپت‌های ثابت سازمانی یا عملیات اختصاصی نیاز دارید، Google Apps Script راه مناسبی برای اتصال Google Docs به API درواره است. با همین روش می‌توانید منوی اختصاصی برای خلاصه‌سازی، بازنویسی، ترجمه، استخراج وظایف و سایر گردش‌های کاری ایجاد کنید.

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

برای ثبت‌نام و دریافت API به وب‌سایت درواره مراجعه کنید و برای انتخاب Model ID و بررسی اطلاعات قیمت، صفحه مدل‌های درواره را ببینید.

مقالات مرتبط

برای مطالعه شرایط استفاده و محدودیت‌های مسئولیت، صفحه «سلب مسئولیت» را مشاهده کنید.

Read more