A Word‑форма с текстовыми полями, выпадающим списком отдела и флажком «Кодекс поведения», а также таблица с тридцатью новыми сотрудниками: это утро копирования‑вставки или один запрос. При локальном запуске сервера GroupDocs.Editor MCP Claude, Cursor или Copilot сначала запрашивают у формы, какие поля в ней есть, затем заполняют одну копию на каждую строку и сохраняют каждую под именем человека. Макет формы остаётся нетронутым, а любое значение без соответствующего поля сообщается вместо того, чтобы тихо отбрасываться:

Прочитать new-employee-form.docx, затем заполнить одну копию на каждую строку new-hires.csv и назвать каждый файл именем сотрудника.

Пошаговая версия находится в документации: Как заполнять поля Word‑формы данными с помощью AI‑агента.

Кто читает таблицу?

Это делает агент, и об этом стоит говорить откровенно. Сервер 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» в один отчёт в конце, а не останавливать процесс на первой ошибке.

Запрос, который работает на первой строке

Большинство ошибок пакета происходят на первой строке и затем повторяются тридцать раз. Сначала выполните сухой запуск:

Прочитать поля new-employee-form.docx и заголовок new-hires.csv. Показать, какой столбец соответствует какому полю, и какие столбцы не имеют поля. Затем заполнить только первую строку и остановиться.

Агент отвечает небольшой таблицей сопоставления: Name -> FullName, Dept -> Department, Phone -> (no field), и одной заполненной формой, которую можно открыть. Если написание отдела или формат даты неверны, вы видите это один раз, исправляете инструкцию и затем запрашиваете остальное. Этот шаг проверки занимает минуту и делает разницу между тридцатью правильными формами и тридцатью формами, требующими ручной проверки.

Он также решает вопросы, на которые таблица сама ответить не может. Должна ли пустая ячейка «Agree» означать снятый флажок, или строку следует пропустить? Должна ли дата «2026-12-01» попасть в поле как есть, или как «1 December 2026»? Агент выполнит то, что вы ему скажете, но его нужно об этом проинформировать.

Что ещё умеют инструменты формы

Текстовые, числовые и датовые поля заполняются строками; флажки принимают "true" или "false"; выпадающие списки — один из их вариантов. format сохраняет заполненную копию как DOC, RTF или ODT вместо DOCX; заполненная форма всегда остаётся Word‑документом, поэтому PDF для нового сотрудника — отдельное преобразование после этого. Защищённая паролем форма открывается с параметром password и остаётся защищённой. Заполненная копия записывается движком полей формы, а не через HTML, поэтому колонтитулы, номера страниц сохраняются как были. Инструменты читают формы в форматах DOCX, DOC, DOCM, DOT, DOTX, RTF и ODT.

Честные ограничения

  • Только Word‑формы и только устаревшие поля формы: текстовые, флажки и выпадающие поля, которые Word вставляет через Developer → Legacy Tools. Управляющие элементы (content controls) не перечисляются и не заполняются. PDF‑формы (AcroForms) не поддерживаются этим сервером.
  • Сервер не читает таблицу; агент поставляет значения, поэтому проверьте сопоставление столбцов на первой строке, прежде чем запускать обработку всех.
  • Один вызов заполняет одну форму. Партия из тридцати — тридцать вызовов.
  • Режим оценки добавляет строку‑баннер в верхнюю часть каждой заполненной копии, так что нелицензированный вывод считается черновиком, а не готовым к отправке новым сотрудникам.

FAQ

Как агент узнаёт имена полей?
Он запрашивает: get_form_fields возвращает имя, тип и текущее значение каждого поля, а также варианты каждого выпадающего списка.

Что происходит с значением, для которого в форме нет поля?
Оно пропускается и указывается в ответе («Not found: Phone»), чтобы агент мог сообщить об этом.

Изменяется ли моя оригинальная форма?
Нет. Каждый запуск записывает новый файл; шаблон остаётся пустым для следующей строки.

Углубиться