بودجه شامل سه برگه کاری است و بخش مالی می‌خواهد دو سلول را در برگه دوم تغییر دهد. تحویل کل کتاب کار به یک عامل هوش مصنوعی برای «به‌روزرسانی Q3» باعث می‌شود که آن سعی کند هر سه برگه را بازسازی کند. با اجرای محلی سرور GroupDocs.Editor MCP، Claude، Cursor یا Copilot فقط همان برگه را به صورت HTML قابل ویرایش استخراج می‌کنند، تغییرات خواسته‌شده را اعمال می‌نمایند و آن را در یک کپی از کتاب کار اصلی ذخیره می‌کنند، به‌طوری که سایر برگه‌ها هرگز از طریق مدل عبور نکنند. اسلایدها نیز به همین شکل عمل می‌کنند:

در فایل budget.xlsx، در برگه کاری ۲ (Q3)، مقدار Travel را به ۱۲٬۵۰۰ تنظیم کنید و Training را به «Training (external)» تغییر نام دهید. سایر برگه‌ها را دست‌نخورده بگذارید.

نسخه گام‌به‌گام در مستندات موجود است: How to edit one worksheet or slide and splice it back into the original.

چرا فایل کامل را به عامل ندهیم؟

زیرا یک مدل نمی‌تواند یک کتاب کار را در خود نگه دارد. می‌تواند متن را نگه دارد. هر برگه‌ای که به آن بدهید، ممکن است «به‌نحوی مفید» بازنویسی شود: اعداد قالب‌بندی می‌شوند، یک فرمول به مقدارش تبدیل می‌شود، ستونی که مدل درک نکرده حذف می‌شود. حتی وقتی هیچ مشکلی پیش نمی‌آید، نمی‌توانید این را از پاسخ تشخیص دهید. راه‌حل محدود کردن دامنه است: دقیقاً همان بخشی را که از عامل خواسته شده تغییر دهد به او بدهید و بقیه را از دسترس او دور نگه دارید.

HTML شکل مناسب برای آن بخش است. جداول، سبک‌ها، قلم‌ها و تصاویر در آن حفظ می‌شوند، مدل‌ها به‌خوبی می‌توانند آن را بخوانند و بنویسند و به ساختار اصلی بازمی‌گردد. متن ساده قالب‌بندی را از دست می‌دهد؛ XML خام .xlsx یک هزارتوی پیچیده است که هیچ عاملی نباید آن را ویرایش کند.

مسیر دورگرد

budget.xlsx  (3 worksheets: Summary, Q3, Q4)
   |-- extract_html {"file":{...},"worksheet":2} --> budget_worksheet2.html
   |        agent edits the HTML: Travel 9000 -> 12500,
   |        "Training" -> "Training (external)"
   '-- save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
                       "format":"xlsx",
                       "sourceFile":{"filePath":"budget.xlsx"},
                       "worksheet":2}
         --> budget-q3-revised.xlsx : worksheet 2 replaced, 1 and 3 untouched
evaluation mode: worksheets/slides 1-2 can be edited; the server refuses 3+

آنچه سرور برگرداند

از GroupDocs.Editor.Mcp نسخه 26.10.0 در برابر یک بودجه مصنوعی استخراج شد:

-> extract_html {"file":{"filePath":"budget.xlsx"},"worksheet":2}
<- Extracted worksheet 2 of 3 of 'budget.xlsx' as editable HTML
   Saved to: …/budget_worksheet2.html
   Next: edit the saved .html and call save_from_html to write it back
   as DOCX, XLSX, PPTX, PDF or another format.
   Preview (plain text): ... Cost centre Planned (EUR) Owner Hosting
   57600 IT Support 14400 IT Travel 9000 Sales Training 6000 HR

-> save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
     "format":"xlsx","sourceFile":{"filePath":"budget.xlsx"},
     "worksheet":2,"outputName":"budget-q3-revised.xlsx"}
<- Saved 'budget_worksheet2.html' into a copy of 'budget.xlsx',
   replacing worksheet 2 of 3 (XLSX)
   Saved to: …/budget-q3-revised.xlsx

باز کردن نتیجه دامنه را تأیید می‌کند: در Q3، Travel برابر ۱۲۵۰۰ است و ردیف «Training (external)» نمایش داده می‌شود؛ Hosting و Support دست‌نخورده‌اند؛ Summary و Q4 همان‌طور که بودند باقی می‌مانند. فایل اصلی budget.xlsx تغییر نکرده است.

ابزارها برگه‌ها و اسلایدها را بر اساس شماره، نه نام، شناسایی می‌کنند؛ get_document_info تعداد را برمی‌گرداند، به همین دلیل در درخواست «worksheet 2 (Q3)» آمده است. پاسخ استخراج شامل پیش‌نمایش متنی ساده است، بنابراین عامل می‌تواند قبل از ویرایش، اطمینان حاصل کند که برگه درست را دارد، و خط «Next:» به او می‌گوید کدام فراخوانی بعدی باید انجام شود. عوامل این نکات را به‌خوبی دنبال می‌کنند. برای یک اسلاید، پیش‌نمایش ممکن است با متن جای‌دار مستر («Click to edit Master title style») شروع شود، بنابراین عامل باید خود HTML را بررسی کند.

اسلایدها و یک قانون برای ارائه‌ها

همین جفت فراخوانی بر روی یک دک اسلایدها کار می‌کند: extract_html با "slide": 2، ویرایش، سپس save_from_html با "slide": 2 و فایل اصلی به عنوان sourceFile. در آزمایش ما، اسلاید ۲ از یک دک سه اسلایدی به صورت HTML استخراج شد، «12 percent» به «14 percent» تغییر یافت و به‌صورت review-revised.pptx بازگشت، در حالی که اسلایدهای ۱ و ۳ دست‌نخورده باقی ماندند.

برای PowerPoint، sourceFile اختیاری نیست. HTML به تنهایی شامل مستر اسلاید نمی‌شود و سرور این موضوع را اعلام می‌کند تا از تولید یک دک خراب جلوگیری شود:

-> save_from_html {"htmlFile":{"filePath":"review_slide2.html"},
                   "format":"pptx"}
<- Save from HTML failed for 'review_slide2.html' (-> pptx): 'pptx' output
   cannot be created from HTML alone; pass the original document as
   'sourceFile'.

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

وقتی مسیر دورگرد جایگزینی مستقیم را شکست می‌دهد

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

خواندن قبل از نوشتن

نیمه اول مسیر دورگرد به‌تنهایی مفید است. عاملی که پرسیده شود «برنامه‌ریزی برای سفر در Q3 چیست و مالک آن کیست؟» می‌تواند برگه Q3 را استخراج کرده و از HTML پاسخ دهد بدون اینکه چیزی را لمس کند، و عاملی که قصد ویرایش دارد باید دقیقاً همین کار را ابتدا انجام دهد: بخش را بخواند، تغییر موردنظر را بیان کند، سپس بنویسد. این ترتیب را در دستورالعمل‌های پروژه خود بگنجانید تا به‌صورت پیش‌فرض اعمال شود:

To change a worksheet or slide, use the groupdocs-editor MCP server:
extract_html for that one part, edit the HTML, save_from_html with the
original as sourceFile and the same worksheet/slide number. Never rebuild
the whole workbook or deck. Say which cells or text you changed.

خط آخر مهم‌ترین نکته است. «Travel را از 9000 به 12500 تغییر دادم و Training را در Q3 به «Training (external)» تغییر نام دادم» پاسخی است که یک بازبین می‌تواند در چند ثانیه در مقابل فایل بررسی کند.

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

  • حالت ارزیابی فقط دو برگه کاری یا اسلاید اول را ویرایش می‌کند و سرور سومین را به دلیل دلیل زیر رد می‌کند: «Evaluation mode edits only the first 2 visible worksheets of a workbook; worksheet 3 is beyond them.»
  • ذخیره‌های بدون لایسنس به‌صورت پیش‌نویس هستند: برگه ویرایش‌شده یک ردیف بنر در بالای صفحه می‌گیرد و کتاب کار یک برگه «Evaluation Warning» اضافه می‌کند.
  • HTML استخراج‌شده در یک اجرا بدون لایسنس با همان خط ارزیابی شروع می‌شود (پیش‌نمایش بالا آن را نشان می‌دهد)، بنابراین عامل باید سلول‌ها را ویرایش کند، نه آن خط.
  • شماره‌های برگه و اسلاید از ۱ شروع می‌شوند و اسلایدهای مخفی نیز شمرده می‌شوند. برای یک اسلاید مخفی باید showHidden: true تنظیم شود؛ یک برگه کاری مخفی صرف‌نظر از مقدار showHidden رد می‌شود، بنابراین ابتدا آن را در کتاب کار نمایش دهید.

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

آیا ویرایش یک برگه، بر دیگران تأثیر می‌گذارد؟
خیر. HTML ویرایش‌شده فقط برگه‌ای را که نام برده‌اید در یک کپی از فایل اصلی جایگزین می‌کند؛ بقیه از فایل منبع منتقل می‌شوند.

آیا می‌توان این کار را با اسلایدهای PowerPoint انجام داد؟
بله، با استفاده از "slide" به جای "worksheet" و ارسال فایل اصلی به عنوان sourceFile که خروجی PowerPoint به آن نیاز دارد.

نتیجه در کجا ذخیره می‌شود؟
در یک فایل جدید در پوشه ذخیره‌سازی، در این مثال budget-q3-revised.xlsx چون outputName مشخص شده است؛ فایل اصلی دست‌نخورده می‌ماند.

برای مطالعه عمیق‌تر