Агент WorkAI умеет читать и редактировать файлы Word (`.docx`), Excel (`.xlsx`, `.xlsm`) и PowerPoint (`.pptx`, `.pptm`), а также собирать PDF из markdown — без установки Python, `python-docx`, `openpyxl` или похожих библиотек на вашей машине. Это отдельные инструменты, не универсальный код: агент не пишет скрипт, который открывает файл и что-то в нём меняет, а вызывает готовый инструмент с точным адресом того, что нужно изменить. Разница важна на практике: скрипт, который «пересобирает» офисный файл, легко теряет то, что не касалось задачи, — картинки, диаграммы, сводные таблицы, форматирование. Инструменты ниже трогают только адресованное место, всё остальное остаётся как было. ## Сначала — чтение **`read_office_file`** — открывает файл и возвращает структуру, а не текст целиком: - в Word — параграфы с id (`p1`, `p2`, …), реальная сетка таблиц (`t1.r3.c2`, пустые ячейки тоже видны), список всего заполняемого — бланки-прочерки, пустые ячейки, чекбоксы, `{{плейсхолдеры}}` — с адресом и подписью рядом; - в Excel — имена листов и значения ячеек по адресам вроде `B2`; для формул возвращается и сама формула, и последнее посчитанное Excel значение; - в PowerPoint — слайды по порядку, у каждой фигуры свой id (`s2.sh1`), тип (текст, картинка, таблица, график, диаграмма) и роль в макете; заметки докладчика читаются тоже. Результат ограничен по объёму (200 строк на лист, 300 параграфов и 40 слайдов по умолчанию), чтобы большой прайс-лист не съел весь контекст целиком: при обрезке агент видит явный флаг и адрес, с которого продолжить чтение следующим вызовом. **`read_office_batch`** — то же самое, но сразу по нескольким файлам (до 50 за раз) под общий бюджет вывода — например, собрать номер, дату и сумму из двадцати похожих счетов. Файл, для которого бюджет закончился, помечается отдельно и не читается молча как пустой — агент обязан дочитать его следующим вызовом. Легаси-форматы `.doc`, `.xls`, `.ppt` и файлы с паролем инструменты не открывают. ## Word: заполнить форму, изменить текст - **`edit_docx_document`** — точечная правка существующего файла по адресам из `read_office_file`: заполнить бланк-прочерк или пустую ячейку, заменить текст параграфа или ячейки, добавить строку в таблицу, вставить параграф рядом с существующим, удалить параграф или строку, поставить/снять галочку в чекбоксе. За один вызов можно передать сразу несколько таких правок. Результат сохраняется в новый файл — исходный не меняется. - **`fill_docx_template`** — для шаблонов с `{{плейсхолдерами}}` (договор, акт, счёт с переменными полями): заполняет их значениями и сохраняет как новый документ. Отсутствие нужного плейсхолдера или незаполненное значение — явная ошибка, не тихая отправка документа со следом `{{name}}` в тексте. - **`fill_docx_template_batch`** — тот же шаблон, но сразу для списка людей или объектов: один комплект значений — один готовый файл в папке, исходный шаблон не меняется. Отчёт о том, что не удалось создать и почему, приходит по каждому файлу отдельно — агент не должен докладывать «готово», если часть провалилась. - **`replace_docx_text`** — точная замена фразы по всему документу, включая колонтитулы, с сохранением в новый файл. Word физически хранит параграф кусками (runs), поэтому обычный текстовый поиск по файлу такую фразу часто не находит — этот инструмент сначала склеивает параграф, потом ищет. Результат отчитывается числом найденных совпадений по каждому правилу замены, а не списком прежних значений: ноль совпадений — сигнал, что фраза не найдена, а не что документ обновился. - **`create_docx_document`** — собирает новый `.docx` с нуля из заголовков, параграфов и таблиц, когда шаблона нет вообще. Картинки, колонтитулы и автоматическую нумерацию этот инструмент не поддерживает — обещать их в результате не стоит. ## Excel: изменить ячейки или создать таблицу - **`edit_office_cells`** — запись значений и формул в существующую книгу по адресам вида `B2`, включая добавление строк (запись ниже последней заполненной строки — это и есть способ дописать таблицу), до 500 ячеек за один вызов. Формулы, стили, диаграммы, сводные таблицы и остальные листы не трогаются. Ячейку, в которой лежит «мастер» общей (shared) формулы на весь диапазон, инструмент менять отказывается — переписать её значением означало бы молча снести формулу у всего диапазона. - **`create_xlsx_workbook`** — новая книга из строк данных с опциональными формулами, до 20 листов и 5000 строк на лист. ## PowerPoint: заменить текст на слайде **`edit_pptx_text`** — точечная замена текста по адресу из `read_office_file`: `s2.sh1` — вся фигура целиком, `s2.sh1.p3` — один параграф внутри неё, `s2.sh4.r2.c1` — ячейка таблицы на слайде. Новый текст наследует форматирование того, что заменил. Макет, тема, анимации, картинки, диаграммы и заметки докладчика не меняются. Новые слайды и фигуры этот инструмент не создаёт — только заполняет то, что уже есть в презентации. Фигуру без текста (картинку, график, диаграмму) и автополе вроде номера слайда инструмент явно отклоняет — заменить их текстом означало бы превратить автополе в статичный текст или писать туда, где текста в принципе нет. ## PDF без установки конвертеров **`export_markdown_to_pdf`** собирает PDF из markdown-файла или готового текста — без `pandoc`, `wkhtmltopdf` и обращений в интернет. Переживают конвертацию заголовки, списки (включая вложенные), таблицы, блоки кода, цитаты, локальные картинки и любой не латинский текст. Не переживают — картинки по внешним ссылкам (они не скачиваются) и всё, что требует JavaScript для отрисовки. ## Общее для всех инструментов записи - Меняется только то, что явно адресовано; всё остальное в файле остаётся как было. - Запись в существующий файл (Excel, PowerPoint) требует вашего подтверждения — как и другие мутирующие инструменты агента, см. [Безопасность агента](/docs/agent/security). - Инструменты Word, которые создают результат заново (`edit_docx_document`, `fill_docx_template`, `fill_docx_template_batch`, `replace_docx_text`, `create_docx_document`), не перезаписывают исходный файл — путь результата всегда отдельный. - У большинства инструментов записи результат показывает прежнее значение каждого изменённого места — случайную правку можно откатить повторным вызовом с прежними значениями. Исключение — `replace_docx_text`: он отчитывается числом совпадений по правилу, без списка прежних значений. - Ни один из этих инструментов не рисует диаграммы, не работает с картинками и не конвертирует форматы — здесь агент честно скажет, что для этого нужен Python-скрипт, а не будет пытаться подменить задачу текстом. ## Дальше - [Инструменты агента — обзор](/docs/agent/tools/overview) — остальные встроенные инструменты. - [Безопасность агента](/docs/agent/security) — какие действия требуют подтверждения.