یک فرم Word با جعبه‌های متن، یک منوی کشویی بخش و یک چک‌باکس کد رفتار، و یک صفحه‌گسترده با سی کارمند جدید: این یک صبح پر از کپی‑پیست یا یک درخواست است. با اجرای سرور GroupDocs.Editor MCP به‌صورت محلی، Claude، Cursor یا Copilot ابتدا از فرم می‌پرسند که چه فیلدهایی دارد، سپس برای هر ردیف یک نسخه پر می‌کنند و هر کدام را با نام شخص ذخیره می‌کنند. طرح فرم دست نخورده می‌ماند و هر مقداری که فیلد متناظری نداشته باشد به‌جای حذف بی‌صدا گزارش می‌شود:

فایل new-employee-form.docx را بخوانید، سپس برای هر ردیف از new‑hires.csv یک نسخه پر کنید و هر فایل را با نام کارمند نامگذاری کنید.

نسخه گام‌به‌گام در مستندات موجود است: How to fill Word form fields from data with an AI agent.

چه کسی صفحه‌گسترده را می‌خواند؟

عامل این کار را انجام می‌دهد و ارزش دارد صریح بگوییم. سرور Editor روی فرم Word کار می‌کند؛ CSV یا کتاب‌کار شما را نمی‌خواند. عامل ردیف‌ها را با ابزارهای فایل خود می‌خواند یا شما آن‌ها را می‌چسبانید، سپس برای هر ردیف یک فراخوانی fill_form_fields با یک outputName برای هر شخص انجام می‌دهد. این تقسیم‌بندی یک ویژگی است: داده‌ها هرگز نیازی به قالبی که سرور درک کند ندارند و عامل می‌تواند در مسیر آن‌ها را پاک‌سازی کند (مثلاً نام کامل را تقسیم کند، تاریخ را نرمال‌سازی کند) قبل از اینکه به فرم وارد شوند.

ابتدا از فرم بپرسید

نام فیلدها در فرم‌های Word به ندرت همان چیزی است که برچسب روی صفحه می‌گوید. برچسب می‌گوید «Full name:»، در حالی که فیلد ممکن است FullName، Text1 یا Name_Employee نامیده شود. حدس زدن باعث می‌شود فرم‌ها نیمی خالی برگردند. get_form_fields نام‌های واقعی، نوع‌ها و مقادیر فعلی را برمی‌گرداند. استخراج شده از GroupDocs.Editor.Mcp 26.10.0 در برابر یک فرم جذب مصنوعی (خروجی کوتاه شده):

-> get_form_fields {"file":{"filePath":"new-employee-form.docx"}}
<- { "count": 6, "fields": [
     { "name": "FullName",   "type": "Text",     "value": "" },
     { "name": "Email",      "type": "Text",     "value": "" },
     { "name": "StartDate",  "type": "Text",     "value": "" },
     { "name": "Department", "type": "DropDown",
       "value": { "options": [ "Engineering", "Finance", "Sales",
                               "Operations" ], "selected": "Engineering" } },
     { "name": "Agree",      "type": "CheckBox", "value": false },
     { "name": "Newsletter", "type": "CheckBox", "value": false } ] }

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

سپس یک ردیف را پر کنید

-> fill_form_fields {"file":{"filePath":"new-employee-form.docx"},
     "values":{"FullName":"Amara Okafor",
               "Email":"amara.okafor@northwind.example",
               "StartDate":"2026-12-01","Department":"Finance",
               "Agree":"true","Phone":"+31 10 555 0100"}}
<- Updated 5 field(s) in 'new-employee-form.docx': FullName, Email,
   StartDate, Department, Agree.
   Not found: Phone. Call get_form_fields for the exact names.
   Saved to: …/new-employee-form_edited.docx

صفحه‌گسترده یک ستون تلفن داشت که فرم فیلدی برای آن نداشت. سرور پنج فیلد موجود را پر کرد و آن‌که وجود نداشت را نام‌گذاری کرد. خواندن نسخه پر شده با get_form_fields مقادیر را در جای خود نشان می‌دهد، "selected": "Finance" و "Agree": true گنجانده شده‌اند، و Newsletter همچنان بدون علامت می‌ماند چون ردیف چیز دیگری نگوید.

کل دسته

new-hires.csv (agent reads it)          new-employee-form.docx
  Amara Okafor, Finance, ...  ---+
  Tomas Varga, Sales, ...     ---+      get_form_fields (once)
  ...                            |        -> FullName, Email, StartDate,
                                 |           Department, Agree, ...
                                 v
  fill_form_fields {"values":{...row...},
                    "outputName":"form-amara-okafor.docx"}   x one per row
     -> "Updated 5 field(s) ... Not found: Phone"
     -> form-amara-okafor.docx, form-tomas-varga.docx, ...

سه دستور باعث می‌شود دسته قابل اطمینان باشد: یک بار get_form_fields را فراخوانی کنید و ستون‌ها را به نام فیلدها قبل از اولین پر کردن نگاشت کنید؛ برای هر ردیف outputName مخصوص به خود را بدهید، زیرا در غیر این صورت نسخه‌ها به‌صورت new-employee-form_edited.docx، new-employee-form_edited (1).docx و غیره انباشته می‌شوند و هیچ‌کس نام خود را روی آن‌ها نمی‌بیند؛ و خطوط «Not found» را در پایان به یک گزارش جمع‌آوری کنید به‌جای این‌که در اولین مورد متوقف شوید.

درخواست (پرومت) که در ردیف اول کار می‌کند

اکثر شکست‌های دسته‌ای در ردیف اول رخ می‌دهند و سپس سی بار تکرار می‌شوند. ابتدا یک اجرای خشک (dry run) درخواست کنید:

فیلدهای new-employee-form.docx را بخوانید و سرصفحه new‑hires.csv را بخوانید. به من نشان دهید کدام ستون به کدام فیلد می‌رود و کدام ستون‌ها فیلدی ندارند. سپس فقط ردیف اول را پر کنید و متوقف شوید.

عامل با یک جدول نگاشت کوچک پاسخ می‌دهد، Name -> FullName، Dept -> Department، Phone -> (no field)، و یک فرم پر شده که می‌توانید باز کنید. اگر املای بخش یا قالب تاریخ اشتباه باشد، یک بار می‌بینید، دستور را اصلاح می‌کنید و سپس بقیه را می‌خواهید. این مرحله بررسی یک دقیقه زمان می‌برد و تفاوت بین سی فرم صحیح و سی فرم است که نیاز به بررسی دستی دارند.

همچنین سؤالاتی که صفحه‌گسترده به‌تنهایی نمی‌تواند پاسخ دهد، حل می‌کند. آیا یک سلول خالی «Agree» به معنای عدم علامت‌گذاری است یا باید ردیف نادیده گرفته شود؟ آیا «2026-12-01» باید به‌صورت همان‌طور که تایپ شده به فیلد تاریخ وارد شود یا به‌صورت «1 December 2026»؟ عامل هرچه بگویید را دنبال می‌کند، اما باید به آن گفته شود.

ابزارهای فرم چه کارهای دیگری انجام می‌دهند

فیلدهای متن، عدد و تاریخ با رشته‌ها پر می‌شوند؛ چک‌باکس‌ها "true" یا "false" می‌گیرند؛ منوهای کشویی یکی از گزینه‌های خود را می‌گیرند. format نسخه پر شده را به‌جای DOCX به DOC، RTF یا ODT ذخیره می‌کند؛ یک فرم پر شده همیشه یک سند Word است، بنابراین PDF برای کارمند جدید پس از آن تبدیل جداگانه‌ای است. فرم محافظت‌شده با رمز با password باز می‌شود و محافظت خود را حفظ می‌کند. نسخه پر شده توسط موتور فیلد‑فرم نوشته می‌شود نه از طریق HTML، بنابراین سرصفحه‌ها، پاورقی‌ها و شماره صفحات همان‌طور که بودند، می‌آیند. ابزارها فرم‌های DOCX، DOC، DOCM، DOT، DOTX، RTF و ODT را می‌خوانند.

محدودیت‌های صادقانه

  • فقط فرم‌های Word و فقط فیلدهای فرم قدیمی: فیلدهای متن، چک‌باکس و منوهای کشویی که Word از Developer → Legacy Tools وارد می‌کند. کنترل‌های محتوا فهرست یا پر نمی‌شوند. فرم‌های PDF (AcroForms) در محدوده این سرور نیستند.
  • سرور صفحه‌گسترده را نمی‌خواند؛ عامل مقادیر را فراهم می‌کند، بنابراین نگاشت ستون‌های خود را در ردیف اول بررسی کنید قبل از اینکه اجازه دهید تمام آن‌ها را پردازش کند.
  • یک فراخوانی یک فرم را پر می‌کند. یک دسته سی‌تایی سی فراخوانی است.
  • حالت ارزیابی یک خط بنر در بالای هر نسخه پر شده اضافه می‌کند، بنابراین خروجی بدون لایسنس یک پیش‌نویس است، نه چیزی که به کارمندان جدید ارسال شود.

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

عامل چگونه نام فیلدها را می‌داند؟
از آن می‌پرسد: get_form_fields نام هر فیلد، نوع و مقدار فعلی، و گزینه‌های هر منوی کشویی را برمی‌گرداند.

چه اتفاقی برای مقداری می‌افتد که فرم فیلدی برای آن ندارد؟
از قلم می‌افتد و در پاسخ نام‌گذاری می‌شود («Not found: Phone»)، بنابراین عامل می‌تواند آن را گزارش کند.

آیا فرم اصلی من تغییر می‌کند؟
نه. هر پر کردن یک فایل جدید می‌نویسد؛ قالب برای ردیف بعدی خالی می‌ماند.

بیشتر بخوانید