Запись строки статуса по расписанию в Google Sheets
Запись строки статуса по расписанию с помощью Schedule Trigger → JSON Operations (JQ) → Append Rows добавляет метку времени, имя сценария и буквальное значение статуса ok в Google Sheets каждый день. Этот шаблон не использует модель ИИ или платный сторонний API. Проверки в рабочей среде пройдены для диагностического стенда, ручного запуска графа и одного реального срабатывания с минутным интервалом. Ежедневное срабатывание в заданное время суток не проверялось.
Статус: проверено в рабочей среде 9 октября 2026 года на AI Flowi Workflow 1.9.2 (пройдено 15 из 15 проверок)
Автор: Ai Flowi · Опубликовано · Обновлено
Задача
Записывайте одну строку на каждое успешное выполнение. Метка времени — фактическое время выполнения триггера, включая смещение часового пояса. Имя сценария задаётся константой в конфигурации. Последняя ячейка всегда содержит ok. Строка подтверждает, что этот сигнал активности дошёл до таблицы; она не проверяет работоспособность другого сервиса.
Для кого
Для команд эксплуатации и администраторов сценариев, которым нужна простая ежедневная запись об активности в доступной для проверки таблице. Для первого запуска используйте закрытую таблицу и синтетические данные.
Пример входных данных
Ежедневному сценарию не нужен входящий HTTP-запрос. Schedule Trigger передаёт данные во время выполнения. Этот сокращённый пример показывает поля, относящиеся к строке; идентификаторы опущены.
{
"trigger": "schedule",
"scheduled_at": "2026-10-10T08:00:00+08:00",
"triggered_at": "2026-10-10T08:00:01+08:00",
"timezone": "Asia/Kuala_Lumpur"
}
Пример строки, а не зафиксированный результат теста:
["2026-10-10T08:00:01+08:00", "Scheduled status heartbeat", "ok"]
Настройка
- Подключите аккаунт Google в AI Flowi Workflow. Убедитесь, что аккаунт может редактировать выбранную закрытую таблицу.
- Создайте отдельный лист, например
Heartbeat. Укажитеtimestamp,workflow_nameиstatusв A1:C1 в указанном порядке. - Сохраните сценарий с именем
Scheduled status heartbeat. Добавьте Schedule Trigger, JSON Operations и Append Rows. - В Schedule Trigger выберите Daily, часовой пояс
Asia/Kuala_Lumpurи одно время, например Hour08, Minute00. Во время подготовки и тестирования оставьте Enabled выключенным. - В JSON Operations выберите JQ Expression и вставьте приведённый ниже запрос для строки. Оставьте поле JQ видимым. Задайте константу, точно совпадающую с сохранённым именем сценария.
- В Append Rows выберите аккаунт Google, задайте Spreadsheet ID, укажите в Range
'Heartbeat'!A:C, выберитеRAWи оставьте Include Object Headers выключенным. Замените диапазон, если выбрали другое имя листа. - Соедините порты, указанные ниже. Запустите сохранённый сценарий вручную и убедитесь, что появилась ровно одна новая строка из трёх ячеек. Затем проверьте одно срабатывание с коротким интервалом перед включением ежедневного расписания.
Соединения узлов и сопоставление полей
| Выход источника | Вход получателя | Назначение |
|---|---|---|
Schedule Trigger: schedule_data | JSON Operations: data | Передача метки времени триггера |
JSON Operations: data_output | Append Rows: values | Передача одной строки в объекте с полем values |
{values: [[.triggered_at, "Scheduled status heartbeat", "ok"]]}
Столбец A получает triggered_at; столбец B — заданное имя сценария; столбец C — ok. Сценарий по расписанию не содержит webhook, модели, маршрутизатора или узла ответа. При переименовании сценария необходимо изменить константу имени в запросе.
Примеры запросов и ответов без конфиденциальных данных
Сам сценарий по расписанию возвращает события выполнения в конструкторе после аутентификации, без синхронного ответа webhook. Отдельный диагностический стенд с webhook проверяет сопоставление данных строки и недопустимые запросы. Он не входит в шаблон из трёх узлов по расписанию и не доказывает срабатывание планировщика.
POST https://workflow.aiflowi.com/api/v1/webhook/YOUR_TEST_HARNESS_FLOW_ID
Content-Type: application/json
x-api-key: YOUR_PLATFORM_API_KEY
{"triggered_at":"2026-10-10T08:00:01+08:00"}
Зафиксированный успешный ответ стенда после добавления одной строки:
HTTP 200
{"status":"appended"}
Зафиксированное отклонение стендом запроса без метки времени:
HTTP 422
{"verified":false,"error":"triggered_at is required and must be text"}
Запрос выше приведён для иллюстрации; тела ответов — зафиксированные результаты в рабочей среде. Отсутствующие и неверные API-ключи возвращали HTTP 403; тела этих ответов не включены в данные проверки. Идентификаторы закрытой таблицы, аккаунта, подключения и выполнения не показаны.
Валидация и поведение при сбоях
Ветка по расписанию использует штатную метку времени триггера и фиксированную конфигурацию. Она не принимает имя сценария или статус от вызывающей стороны. Диагностическому стенду требуется тело в виде объекта и текстовая метка времени в формате ISO 8601 с часовым поясом. При отсутствующей метке времени, неверном типе её данных, теле, не являющемся объектом, и некорректном JSON зафиксирован ответ HTTP 422. Отсутствующие или неверные Platform API Key возвращали HTTP 403. Контрольное чтение подтвердило, что каждый отклонённый запрос оставлял все строки таблицы без изменений.
Стенд проверяет только синтаксис метки времени; несуществующая календарная дата может соответствовать его шаблону. Ограничьте доступ к этому диагностическому адресу доверенными системами. Дополнительные входные поля игнорируются. Повторение допустимого запроса добавляет ещё одну строку.
Ошибка Google Sheets останавливает сценарий. В рассмотренной эталонной платформе для этого компонента нет поддерживаемой ветки обработки исключений внутри сценария; вызывающая сторона закрытого webhook может получить необработанную ошибку платформы, включая сведения Google API. Эта схема не предусматривает управляемого ответа при ошибке. Проверьте разрешения, имя листа и Spreadsheet ID, затем изучите историю выполнения и прочитайте таблицу перед повторной попыткой.
Результаты тестирования
В данных проверки в рабочей среде зафиксировано прохождение 15 из 15 проверок 9 октября 2026 года. В двенадцати проверках использовался отдельный вспомогательный стенд с webhook. Сам граф из трёх узлов по расписанию был запущен вручную через API запуска графа с аутентификацией, с событиями завершения в NDJSON, trigger: manual, завершением трёх узлов и одной соответствующей строкой. Затем его временно включили с настройками Interval = 1 Minute. В этот период ручных вызовов основного графа не было; контрольное чтение таблицы и новая транзакция планировщика с trigger: schedule подтвердили соответствие добавленной метки времени. Реальное срабатывание добавило одну строку за зафиксированное окно наблюдения длительностью 69 811 мс, включая восстановление настроек, контрольное чтение и проверку журнала. Это было реальное срабатывание по интервалу, а не проверка ежедневного запуска в заданное время суток.
| Проверка | Ожидаемое поведение | Полученный код HTTP / результат выполнения | Зафиксированное изменение строк | Результат |
|---|---|---|---|---|
| Допустимый запрос к стенду | 200; одна строка с точными значениями | HTTP 200 | +1; проверены точные значения строки из трёх ячеек | ПРОЙДЕНО |
| Отсутствует метка времени | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| Неверный тип метки времени | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| Некорректный JSON | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| Отсутствует API-ключ | 403; без записи | HTTP 403; тело не приведено | 0; существующие строки не изменились | ПРОЙДЕНО |
| Неверный API-ключ | 403; без записи | HTTP 403; тело не приведено | 0; существующие строки не изменились | ПРОЙДЕНО |
| Неверный формат метки времени | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| JSON не является объектом | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| Поддельные статус и имя | 200; заданное имя и ok | HTTP 200 | +1; проверены заданное имя стенда и буквальное значение ok | ПРОЙДЕНО |
| Идентичная повторная попытка | 200; ещё одна строка | HTTP 200 | +1; идентичная повторная попытка добавила ещё одну строку | ПРОЙДЕНО |
| Смещение часового пояса | 200; метка времени сохранена | HTTP 200 | +1; метка времени с +08:00 сохранена | ПРОЙДЕНО |
| Метка времени null | 422; без записи | HTTP 422 | 0; существующие строки не изменились | ПРОЙДЕНО |
| Ручной запуск графа по расписанию | Ручной триггер; одна строка | Ручной запуск завершён; trigger: manual; завершены 3 узла | +1; метка времени соответствует триггеру; имя и ok проверены | ПРОЙДЕНО |
| Реальное срабатывание с минутным интервалом | Новая запись планировщика и соответствующая строка | Реальное срабатывание по времени; связь с планировщиком подтверждена; окно наблюдения 69 811 мс | +1; метка времени соответствует новой записи планировщика; имя и ok проверены | ПРОЙДЕНО |
| Восстановление выключенного Daily | Сохранено enabled=false | Контрольное чтение сохранённого сценария; подтверждены выключенный Daily, 08:00, Asia/Kuala_Lumpur | Не зафиксировано; проверка конфигурации | ПРОЙДЕНО |
Ручной запуск выполнен: Да: запуск самого графа по расписанию с аутентификацией. Реальное срабатывание проверено: Да: минутный интервал, одна строка с подтверждённым соответствием. Отключение и восстановление расписания: Подтверждено отключение; восстановлены Daily 08:00, Asia/Kuala_Lumpur. Удаление временного ключа: Удаление подтверждено. Повторная проверка импортированной копии: Не зафиксировано в предоставленных данных проверки. Набор проверок начат с 0 строк данных и завершён с 6 строками, не считая заголовка. В материалах проверки без конфиденциальных данных не сохранены точные значения записанных строк и метки времени выполнения; зафиксированы изменения числа строк и проверки сопоставления.
Скачать
Доступность скачивания: Недоступно в предоставленных материалах. Нет подтверждения наличия экспорта без конфиденциальных данных или повторной проверки импортированной копии в рабочей среде. Настройка и сопоставление полей выше описывают проверенный граф. Перед передачей экспорта нужно удалить конфиденциальные настройки, оставить сценарий выключенным при импорте и проверить его после восстановления подключений.
Обязательная конфигурация
- Аккаунт AI Flowi Workflow с неисчерпанным лимитом тарифа.
- Авторизованное подключение Google с правом редактирования выбранной таблицы.
- Отдельный лист с тремя заголовками и его точный диапазон.
- Сохранённое имя сценария, совпадающее с константой JQ, время ежедневного запуска и часовой пояс IANA.
- Enabled включается только после проверки ручного запуска и теста автоматического срабатывания.
- Только для необязательного закрытого стенда: POST, аутентификация Platform API Key и режим ответа From Flow.
Проверенная версия и дата
Версия платформы шаблона: AI Flowi Workflow 1.9.2, согласно предоставленному действующему каталогу. Дата проверки в рабочей среде: 9 октября 2026 года. Зафиксированный набор проверок выполнялся с 2026-10-09T01:37:10.178Z до 2026-10-09T01:38:44.750Z. В данных выполнения отдельно не зафиксирован ответ с версией развёрнутой платформы; версия указана по каталогу, а результаты выполнения — по записи из рабочей среды. Перед включением сценария проверьте поля компонента расписания в своём рабочем пространстве.
Допущения о расходе и стоимости
Тарифы: Go от USD8 в месяц при годовой оплате (USD10 помесячно), Plus от USD16 (USD20 помесячно), Pro 100 от USD80 (USD100 помесячно), Pro 200 от USD160 (USD200 помесячно) и Pro 500 от USD400 (USD500 помесячно), от 5,000 до 250,000 Flowi Tokens в месяц с возможностью пополнения; 1 токен за каждый запуск узла; использование сторонних API и моделей не включено.
Ежедневная ветка при успешном выполнении запускает три узла, поэтому расчётный расход — 3 Flowi Tokens на выполнение. При одном выполнении в день в течение 30 дней расчётный расход составляет 90 Flowi Tokens. Вызовов ИИ или модели и платного стороннего API нет. По-прежнему действуют квоты существующего подключения Google и аккаунта Google.
| Выполнения | Расчёт по узлам | Flowi Tokens |
|---|---|---|
| 100 | 100 × 3 | 300 |
| 1 000 | 1 000 × 3 | 3 000 |
| 10 000 | 10 000 × 3 | 30 000 |
Это расчёт расхода, а не измеренные списания или цены дополнительных тарифов. Основная ветка не разветвляется и предполагает одну строку на запуск. Повторные попытки и ручные запуски увеличивают число выполнений. Для необязательного стенда расчётный расход составляет семь запусков узлов на допустимый запрос и четыре — на отклонённые входные данные; каждое контрольное чтение добавляет ещё один запуск узла. Неудачные запуски могут расходовать токены на узлы, выполненные до сбоя.
Ограничения
- Успешно записанная строка — запись об активности, а не проверка работоспособности сервиса или гарантия доступности.
- Добавление строк не защищает от дубликатов. Повторная попытка при неопределённом результате может добавить ещё одну строку.
- Зафиксировано одно реальное срабатывание с минутным интервалом. Ежедневное срабатывание в заданное время суток, восстановление после простоя, дрейф часов, переходы на летнее время и долгосрочная надёжность расписания не проверялись.
- После отключения расписания уже поставленные в очередь или выполняющиеся задания могут завершиться.
- Здесь не реализованы автоматические повторные попытки, оповещения, восполнение пропусков, восстановление после ошибок таблицы или политика хранения строк. Искусственное создание сбоя Google Sheets не входило в зафиксированные 15 проверок; ограничение восстановления следует из рассмотренной схемы.
- Экспорт без конфиденциальных данных или повторная проверка импортированной копии не зафиксированы. Полные сохранённые строки и исходные данные планировщика не включены в данные проверки без конфиденциальной информации.
- Изменение имени сценария требует обновления константы JQ. Изменение заголовков, имён листов или настроек общего доступа может нарушить настроенную запись.
Следующие шаги
Настройте собственную закрытую таблицу и проверьте её заголовки. Выполните ручную проверку и запуск с коротким интервалом в своём рабочем пространстве, затем проверьте ежедневное срабатывание в заданное время суток, прежде чем полагаться на ежедневное расписание. Импортируйте и повторно проверьте копию без конфиденциальных данных перед тем, как предлагать её для скачивания. Выберите время ежедневного запуска и включите настроенный сценарий после этих проверок.
См. также: Каталог компонентов · Подключения · Руководство: webhook → Google Sheets · Интеграция с Google Sheets.