Вы можете поручить Мистеру Баффетту одну или несколько задач, каждая из которых будет включать свой список шагов. В настоящее время принимаются инструкции только в JSON-формате, но это очень просто, давайте создадим новую задачу.
Вы можете поручить Мистеру Баффетту одну или несколько задач, каждая из которых будет включать свой список шагов. В настоящее время принимаются инструкции только в JSON-формате, но это очень просто, давайте создадим новую задачу.
Откройте любой удобный вам текстовый редактор, например, Блокнот или онлайн-сервис для редактирования JSON. Здесь будем подготавливать описание задачи. Добавьте пустые фигурные скобки в новый документ:
{
}
В настройках задачи достаточно указать только идентификатор таблицы. Например, для таблицы по ссылке https://docs.google.com/spreadsheets/d/ABCDE
получится следующий формат:
{
"spreadsheetId": "ABCDE"
}
Придумайте такое имя, чтобы его было удобно вводить для ручного запуска. Имена задач должны различаться.
{
"spreadsheetId": "ABCDE",
"name": "Моя задача"
}
Добавьте поле "steps"
, для будущего списка шагов этой задачи:
{
"spreadsheetId": "ABCDE",
"name": "Моя задача",
"steps": [
...
]
}
Шаги делятся на три вида:
Данный шаг изменяет значение одной заданной ячейки таблицы.
Шаг, устанавливающий простой текст:
{
"cell": "A1",
"set": { "value": "Поехали!" }
}
В ячейку A1 запишет текст «Поехали!».
Шаг, устанавливающий текущую дату и время по маске в формате Moment.js:
{
"cell": "B1",
"set": { "time": "DD/MM/YYYY HH:mm:ss" }
}
В ячейку B1 запишет время на момент запуска задачи в формате 01/12/2020 14:00:00, где 01 – дата, 12 — месяц, 2020 — год, 14 — час, а 00 — это минуты и секунды.
Обязательно укажите ваш часовой пояс.
Для корректной работы и отображения даты не забудьте указать формат ячейки в самой Google-таблице.
Шаг, устанавливающий курс валюты от ЦБ РФ:
{
"cell": "C1",
"set": { "cbr": "USD" }
}
В ячейку C1 запишет курс доллара на сегодняшний день.
Шаг, устанавливающий котировку с московской биржи:
{
"cell": "D1",
"set": { "moex": "YNDX" }
}
В ячейку D1 запишет курс акций Яндекса на момент запуска задачи.
Шаг, устанавливающий котировку с Yahoo Finance:
{
"cell": "E1",
"set": { "yahoo": "GOOG" }
}
В ячейку E1 запишет курс акций Google на момент запуска задачи.
Шаг, устанавливающий котировку линии ICN Holding:
{
"cell": "F1",
"set": { "icn": "GE50" }
}
В ячейку F1 запишет курс линии Gold Elephants на момент запуска задачи.
Шаг, копирующий значения из одних ячеек в другие. Копируются чистые значения без форматирования. Копирование внутри шага на добавление строки значений позволяет сохранять исторические данные ваших расчётов.
Для одновременного копирования значений нескольких ячеек используется следующая запись:
{
"copy": {
"G1": "H1",
"I1": "J1"
}
}
Одновременно в ячейку G1 запишет чистое значение ячейки H1, а в ячейку I1 запишет значение ячейки J1.
Если копирование одной ячейки зависит от расчётов таблицы после копирование другой ячейки, то потребуется выполнить эти действия последовательно:
{
"copy": {
"G1": "H1"
}
},
{
"copy": {
"I1": "J1"
}
}
Сначала в ячейку G1 запишет значение ячейки H1, а потом в ячейку I1 запишет значение ячейки J1.
Данный шаг добавляет в конец таблицы строку с заданными значениями для каждого столбца. Обратите внимание, что при определении места добавления новой строки Google-таблицы руководствуются понятием «таблицы» на основании уже имеющихся значений в ячейках.
Для добавления значений в строку таблицы можно использовать все те же самые источники, что и при установке значения в одну ячейку.
Обратите внимание, что формат операции копирования отличен от представленного в шаге установки значений ячейкам.
Шаг, добавляющий строку со значениями:
{
"cell": "A2",
"append": [
{ "time": "DD/MM/YYYY" },
{ "cbr": "USD" },
{ "moex": "YNDX" },
{ "yahoo": "GOOG" },
{ "copy": "H1" }
]
}
После всех заполненных строк под ячейкой A2 добавит строку с четырьмя столбцами: курсом доллара, курсом акций Яндекса, акций Google и значением ячейки H1.
Данный шаг отправляет сообщение с заданными текстом в мессенджер.
Чтобы отправить себе сообщение с результатами расчётов добавьте следующий шаг:
{
"message": "Сумма: ${X1}"
}
При выполнении задачи бот отправит вам сообщение с текстом «Сумма: 200», где 200 — это значение ячейки X1.
Если интересующие вас ячейки находятся на разных листах таблицы, то в описании шага это обозначается следующим образом при установке значения:
"cell": "Лист2!X1"
И при отправке сообщения соответственно:
"message": "Сумма: ${Лист2!X1}"
Значение ячейки X1 будет записано и считано из листа с именем «Лист2».
Для форматирования сообщений доступна markdown-разметка: *жирный*
, _курсив_
и [ссылка](https://misterbuffett.ru)
:
"message": "[График](https://docs.google.com/spreadsheets/d/ABCDE/edit)"
Данное сообщение представляет из себя ссылку с текстом «График» на google-таблицу.
Для обозначения переноса строки в сообщении используется метка \n
:
"message": "Строка 1: ${X1}\nСтрока 2: ${X2}"
Для навигации по результатам запуска задач их можно пометить хештегом:
"message": "#мойпортфель"
Если сообщение нужно отправлять не при каждом запуске задачи, то для этого можно указать условие. Например, это может пригодиться для уведомления о необходимости провести ребалансировку портфеля или для отправки сигнала об ожидаемом изменении цены какого-то актива. Сперва нужно настроить условную установку значения в ячейке таблицы, например, с помощью функции ЕСЛИ (IF), а затем добавить в шаг отправки сообщения условие на значение этой ячейки.
Условие на пустоту ячейки:
{
"message": "Время ребалансировки!",
"when": {
"X1": { "empty": false }
}
}
Отправит сообщение, когда во время выполнения задачи ячейка X1 будет не пустой.
Можно комбинировать несколько условий:
{
"message": "Яндекс подешевел и рубль укрепился!",
"when": {
"X1": { "empty": false },
"X2": { "empty": true }
}
}
Отправит сообщение, когда ячейка X1 будет не пустой и ячейка X2 пустой.
Задача может быть ручной — для запуска такой задачи нужно отправить команду боту. Так же, задача может быть регулярной, тогда она будет запускаться автоматически по установленному расписанию или в любой момент вручную.
Для регулярной задачи нужно указать частоту запуска в формате CRON и часовой пояс:
{
...
"cronTime": "0 12,18 * * 1-5",
"timeZone": "Europe/Moscow"
}
Задаёт запуск задачи в полдень и шесть часов вечера (12,18
из примера) с понедельника по пятницу (1-5
из примера) в московском часовом поясе.
По умолчанию время обрабатывается в нулевом меридиане, что соответствует часовому поясу Europe/London
.
Полная структура описания задачи выглядит следующим образом:
{
"spreadsheetId": "ABCDE",
"name": "Моя задача",
"cronTime": "0 12,18 * * 1-5",
"timeZone": "Europe/Moscow",
"steps": [
{
"cell": "A1",
"set": { "value": "Поехали!" }
},
{
"cell": "B1",
"set": { "time": "DD/MM/YYYY" }
},
{
"cell": "C1",
"set": { "cbr": "USD" }
},
{
"cell": "D1",
"set": { "moex": "YNDX" }
},
{
"cell": "E1",
"set": { "yahoo": "GOOG" }
},
{
"cell": "F1",
"set": { "icn": "GE50" }
},
{
"cell": "G1",
"set": { "copy": "Z1" }
},
{
"message": "Сумма: ${X1}"
}
]
}
Введите в чате с Мистером Баффеттом команду /addtaskjson
, а затем отправьте туда полный JSON задачи, сформированный в текстовом редакторе.
Готово, задача добавлена! Чтобы увидеть список задач достаточно отправить команду /tasklist
, а чтобы удалить задачу нужно отправить команду /deletetask
.
В настоящее время для всех пользователей распространяются следующие лимиты:
Вы можете указать любую частоту запуска регулярной задачи, но она не будет запускаться чаще обозначенного выше лимита.