Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
“Рецепт Счастья” — увлекательная игра в жанре «соедини предметы»! Помогите Эмили раскрыть тайны пропавшего родственника, найти сокровища и восстановить её любимое кафе.

Рецепт Счастья

Казуальные, Головоломки, Новеллы

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
1
karat12238
3 года назад

Google таблицы⁠⁠

Вечер добрый, ни как не могу решить задачу, может кто знает, чем поможет.

Мне приходят заказы. В одном заказе может быть несколько абсолютно разных позиций товара, пример разных позиций товара, водном заказе, на фото ниже выделен красным (22382162670000) столбец (А)_это ШК моих заказов с (В) по (Н) информация о заказе.

У меня стоит задача что бы в моем листе подбора отображалась информация о товаре, не только первого найденного значения по формуле ВПР, а все значения по указанному ШК. Может есть какая ни будь формула для решения.

Пример функции ВПР на втором скриншоте, и так же пример того чего я хочу добиться

Google таблицы Google Таблицы, Google
Google таблицы Google Таблицы, Google
Показать полностью 1
[моё] Google Таблицы Google
2
1
karat12238
3 года назад

Google таблица⁠⁠

Есть какая не будь формула или функция, для сортировки дублей, нужно что бы формула отсевала все дубли, и передала оставшиеся значение в столбец.

пример

у меня есть 2 столбца с ШК, это В и С мне нужно что бы формула все это сравнила отсела дубли и перенесла значение без дубля в столбец Е. в данный момент у меня получилось через условное форматирование только засветить. то что засвечено в столбце В не является дублем.

ХЕЛП

Google таблица Google Таблицы, Табличка, Google
[моё] Google Таблицы Табличка Google
12
76
SensaiKudisai
SensaiKudisai
3 года назад
MS, Libreoffice & Google docs

Команды в телеграм ботах⁠⁠

Снова привет)

В ботах часто используются команды вида “/command”, которые провоцируют бота на то или иное действие.

Кто уже создавал ботов мог видеть их в @botfather.

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Давайте разберемся как создать этот список команд и присвоить каждой ту или иную функцию.


С созданием списка команд все довольно просто, это реализуется непосредственно в настройках бота через @BotFather:


1) Вводим команду /mybots

2) Видим список наших ботов

3) Выбираем тот бот, которому присвоим список команд

4) Кликаем Edit Bot

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

5) Кликаем Edit Commands

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Далее, следуя формату, отправляем список команд, например:

getkeyboard - получить клавиатуру

save - сохранить

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Следим, что нам отвечает отец ботов. Видим сообщение Success - мы молодцы! Идем дальше.


Теперь если мы введем “/” в чате с нашим ботом, то он предложит список команд. Проверяем, что список есть:

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Добавим логику нашим командам


Как уже видно из описания команд, я хочу отправить в чат клавиатуру.

Создам новую ГТ и перейду к написанию скрипта

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Назову файл doPost, здесь будет только эта функция

Команды в телеграм ботах Telegram, Telegram бот, Бот, Чат-бот, Bots, Google Таблицы, Javascript, Длиннопост

Добавлю следующий скрипт:


function doPost(e)

{

let update = JSON.parse(e.postData.contents);

if (update.hasOwnProperty('message'))

{

let msg = update.message;

let chat_id = msg.chat.id;

let text = msg.text;

let msg_array = msg.text.split(" ");

let date = (msg.date/86400)+25569.125;

let user = msg.from.username;

if (text == "/getkeyboard") {

Demo.send_key("Галочки", chat_id, API, keyboard)

}

if (text == "/save") {

Demo.send("Клавиатура сохранена”, chat_id, API)

}

}

}

Все! Для каждой команды теперь добавлен функционал...


Хорошо, расскажу поподробнее))


doPost(e) - стандартная функция телеграма для обработки сообщений ботом. В нее мы записываем, что бот должен делать при получении той или иной команды.


Как видно из скрипта, команда - это простое текстовое сообщение. При заведении списка команд мы ограничиваем пользователя в свободном написании этих самых команд, тем самым упрощая всем жизнь.


Итак, если текст сообщения == “/getkeyboard”, мы отправляем в чат некую клавиатуру.

Если мы отправили боту команду “/save”, то он ответит нам сообщением “Клавиатура сохранена”.


Подробно функции send и send_key, а также библиотека Demo рассматривались в постах ранее. Вот ссылки:

- Создание бота (функция send)

- Клавиатуры (функция send_key)

- Библиотека


Дабы не перегружать дорогого читателя инфой, остановлюсь здесь)

Как всегда жду фидбека и вопросиков ^^ Всегда рады пообщаться!

Показать полностью 6
[моё] Telegram Telegram бот Бот Чат-бот Bots Google Таблицы Javascript Длиннопост
5
67
SensaiKudisai
SensaiKudisai
3 года назад
MS, Libreoffice & Google docs

Типы клавиатур в чат ботах⁠⁠

Сегодня познакомимся с существующими клавиатурами в ботах и тем, как их подключить и настроить.


Всего есть два типа клавиатур:

- ReplyKeyboardMarkup;

- InlineKeyboardMarkup.


ReplyKeyboardMarkup используется в случаях, когда вы хотите получить от пользователя конкретный ответ, предоставляя ему возможность не печатать ручками, а выбрать из предлагаемых вариантов. Иными словами, это заготовки текстовых сообщений. Расположены кнопки под полем ввода сообщения

Типы клавиатур в чат ботах Telegram, Бот, Чат-бот, Telegram бот, Bots, Google Таблицы, Длиннопост

InlineKeyboardMarkup - это более продвинутый вариант кнопок, за которыми скрыт дополнительный функционал. В данном случае кнопки прикрепляются непосредственно к сообщению от бота

Типы клавиатур в чат ботах Telegram, Бот, Чат-бот, Telegram бот, Bots, Google Таблицы, Длиннопост

В зависимости от выбранной кнопки могут последовать те или иные действия. Эту логику мы задаем в скрипте для каждой кнопки.

В приведенном примере мы хотим записать пользователя на маникюр и предлагаем ему определиться с днем (в качестве примера приведены только два варианта, но это можно закастомить).


После выбора того или иного дня бот внесет инфу в ГТ, а именно: дату, имя пользователя и ид чата.

Запись через чат имеет следующий вид

Типы клавиатур в чат ботах Telegram, Бот, Чат-бот, Telegram бот, Bots, Google Таблицы, Длиннопост

Здесь мы выбрали кнопку Сегодня и получили ответ от бота.

В ГТ при этом появилась строчка

Типы клавиатур в чат ботах Telegram, Бот, Чат-бот, Telegram бот, Bots, Google Таблицы, Длиннопост

Подключение и настройка


Каждая клава (инлайн-клавиатур может быть сколько угодно) записана в соответствующую переменную:


var INLINE_Days =

{

"inline_keyboard": [

[{"text": "Сегодня", "callback_data": "today"}],

[{"text": "Завтра", "callback_data": "tomorrow"}],

],

"resize_keyboard": true

}


var KEYBOARD =

{

"keyboard": [

["Записаться", "Отменить запись"]

],

"resize_keyboard": true

}


Обратите внимание, что синтаксис для инлайн (INLINE_Days) и обычной (KEYBOARD) клавиатур различается.

Клавиатурам можно добавить дополнительные свойства, мы использовали только resize_keyboard со значением true. Их не так много и они есть в документации телеграма.


Далее в коде обращаемся к клавам по имени переменной.


С ReplyKeyboardMarkup все достаточно просто. Она добавляется при первом прогоне скрипта, когда вы отправляете в чат команду /start, например.


Нам нужна функция, которая отправит в чат клавиатуру. Функция та же, что и при отправке сообщения ботом send(), за двумя исключениями:


- у функции появляется дополнительный параметр - keyboard;

- у объекта payload появляется доп свойство - reply_markup : JSON.stringify(keyboard)


Ниже скрипт функции отправки обычной клавы в чат:


function send_key (msg, chat_id, api, keyboard)

{

var payload = {

'method': 'sendMessage',

'chat_id': String(chat_id),

'text': msg,

'parse_mode': 'HTML',

reply_markup : JSON.stringify(keyboard)

}

var data = {

"method": "post",

"payload": payload

}

UrlFetchApp.fetch('https://api.telegram.org/bot' + api + '/', data);

}


Вызов функции осуществляется из тела функции doPost(e) одной строкой:


send_key("Поехали", chat_id, API_TOKEN, KEYBOARD)


Здесь всё.


Что касается инлайн-клавиатур.

Отправка клавиатуры наступает при определенном условии. Если пользователь отправил в чат слово “Записаться”, то отправляем ему нашу инлайн-клаву:


if (text == "Записаться") {

Demo.send_key("Выберите день", chat_id, API_TOKEN, INLINE_Days)

}


Переменная text  содержит текст сообщения, которое мы и проверяем на соответствие.


Результатом выполнения функции send_key будет сообщение от бота Выберите день и кнопки под ним.


Далее нужно предусмотреть алгоритм обработки нажатия этих кнопок.

Если мы кликаем на какую-либо из кнопок (“Сегодня” или "Завтра"), то добавляем новую строку в ГТ и отправляем сообщение в чат, что запись создана.


if (data == "today")

{

let date = Demo.getNewDate(0);

let ind = get_ind(chat_id);

Clients.getRange(ind,1).setValue(user_name);

Clients.getRange(ind,2).setValue(chat_id);

Clients.getRange(ind,3).setValue(date);

Demo.send("Вы успешно записались. "+"Дата визита: "+ date, chat_id, API_TOKEN);

}


Ниже скрипт полностью (не забываем, что значения глобальных переменных у вас будут свои):


// Объявляем все нужные нам переменные. Док важно открывать именно по ID, а не брать активный док, т.к. запуск кода будет производить бот

const API_TOKEN = "1946675042:AAHg1HTHe42GhR9EEt0EdbR94j1G8pDcTWE";

const DOC = SpreadsheetApp.openById("1ALJLtLdt-LT7GEF4hawIizVeJXFnoPZCsC0pw7kcp70");

const Clients = DOC.getSheetByName("Clients");

const Calendar = DOC.getSheetByName("Calendar");


function api_connector ()

{

var App_link = "https://script.google.com/macros/s/AKfycbx9izXW_GcUvg-OlXuP9...";

UrlFetchApp.fetch("https://api.telegram.org/bot"+API_TOKEN+"/setWebHook?url="+App_link);

}


function doPost(e)

{

var update = JSON.parse(e.postData.contents);

if (update.hasOwnProperty('message'))

{

var msg = update.message;

var chat_id = msg.chat.id;

var text = msg.text;

var msg_array = msg.text.split(" ");

var date = (msg.date/86400)+25569.125;

var user = msg.from.username;

if (text == "Записаться") {

Demo.send_key("Выберите день", chat_id, API_TOKEN, INLINE_Days)

}

if (text == "Отменить запись") {

let ind = get_ind(chat_id);

Clients.getRange(ind,1,1,3).deleteCells(SpreadsheetApp.Dimension.ROWS);

Demo.send("Запись отменена", chat_id, API_TOKEN)

}

}

if (update.hasOwnProperty('callback_query'))

{

var data = update.callback_query.data;

var text = update.callback_query.message.text;

var id = update.callback_query.message.message_id;

var chat_id = update.callback_query.message.chat.id;

var user_name = update.callback_query.from.username;

if (data == "today")

{

let date = Demo.getNewDate(0);

let ind = get_ind(chat_id);

Clients.getRange(ind,1).setValue(user_name);

Clients.getRange(ind,2).setValue(chat_id);

Clients.getRange(ind,3).setValue(date);

Demo.send("Вы успешно записались. "+"Дата визита: "+ date, chat_id, API_TOKEN);

}

if (data == "tomorrow") {

let date = Demo.getNewDate(1);

let ind = get_ind(chat_id);

Clients.getRange(ind,1).setValue(user_name);

Clients.getRange(ind,2).setValue(chat_id);

Clients.getRange(ind,3).setValue(date);

Demo.send("Вы успешно записались. "+"Дата визита: "+ date, chat_id, API_TOKEN);

}

}

}


Отдельно ниже представлена доп функция, которая проверяет наличие ид в ГТ. Если ид уже есть в таблице, мы обновляем данные у строки с этим ид. В противном случае создаем новую строку.


function get_ind() {

let chat_id = 311157431;

let arr = Clients.getRange(1,2,Clients.getLastRow()).getValues()

arr = arr.flat()

let ind = arr.indexOf(chat_id)

if (ind > -1) {

ind = ind+1;

} else {

ind = Clients.getLastRow()+1;

}

return ind

}



ID для подключения библиотеки Demo: 1JkXEW_zfhr6v0TKsvU_ZbygNLpXEczxZcC46fMF_ffk-noMk8UKcMitz


Здесь также заметим, что клик по кнопке в инлайн клавиатуре отправляет боту JSON со свойством callback_query. Это значит, что нам нужны дополнительные переменные, в которые мы запишем значения из этого JSON пакета.


Это краткая вводная в мир клавиатур. Скоро будут посты про простые сервисы, куда будут добавлены и доработаны те же клавиатуры и доп функции.

Показать полностью 4
[моё] Telegram Бот Чат-бот Telegram бот Bots Google Таблицы Длиннопост
3
43
SensaiKudisai
SensaiKudisai
3 года назад
MS, Libreoffice & Google docs

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6)⁠⁠

Глобально задача в следующем:

1 - забрать с какого-нибудь сайта прогноз погоды

2 - подключить бота и привязать его к таблице

3 - настроить триггер для отправки.

Посмотрев несколько сайтов с погодой - выбор пал на Яндекс, ввиду удобной структуры сайта.

Отсюда я забрал прогноз:

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Подробнее о том как спарсить данные с сайта в таблицу в этом посте: Парсинг данных с сайтов в гугл таблички (GS1)

Тут приведу только формулу:

=IMPORTHTML("https://yandex.ru/pogoda/ufa/details?via=mf#26","table",1)

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Теперь подключаем бота. Как это сделать - читай тут: Подключение телеграм бота к гугл табличкам (GS3)


Если ранее мы использовали chat_id - чат с самим ботом, то сейчас мы будем использовать ид чата/ группы в телеграме, в который бот был добавлен.

Для этого нам необходимо сохранять ид чата отдельно в таблице и обращаться к этому значению как к значению переменной chat_id.

Соответственно, нам нужна функция, которая будет это делать:


function link(chat_id) {

//записывает ид чата в таблицу

DOC.getSheetByName("Settings").getRange(2,1).setValue(chat_id);

Demo.send("ID записан", chat_id, API_TOKEN);

}


Важно! В строке Demo.send я вызываю функцию send, которая уже рассматривалась в посте про создание бота. Demo в данном контексте - это название библиотеки, также подробнее про библиотеки можно почитать в соответствующем посте.


Вызывать ее мы будем из тела функции doPost(e) при условии, что боту отправлена команда /link. В коде это выглядит вот так:

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Теперь соберем все вместе и сформируем сообщение для отправки в чат.


Глобальные переменные:


API_TOKEN - токен бота

DOC - ссылка на вашу гугл таблицу

DATA - лист гугл таблицы, содержащий прогноз погоды

SETTINGS - лист гугл таблицы, содержащий значение chat_id

App_link - URL веб приложения

Все, что в кавычках, должно быть изменено на ваши значения.

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Функция для подключения веб хука:

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Функция link(chat_id) для запоминания id чата

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Функция daily() для формирования и отправки прогноза в чат:

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

На данный момент функция daily() не вызывается другой функцией или командой типа /link или /hello.


Мы добавим триггер, который будет вызывать функцию автоматически каждое утро.


Переходим на вкладку Triggers

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Добавляем новый триггер

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

В окне задаем необходимые параметры.

Во-первых, функцию. Фукция, которая вызывается по триггеру, - daily().

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Event source - по времени (Time-driven)

Type of time based trigger - Day timer (раз в день)

Time of day - в какое время триггер должен сработать

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Сохраняем.


Результат работы скрипта ниже.

Чат с прогнозом погоды и триггеры в гугл таблицах (GS6) Telegram, Telegram бот, Google Таблицы, Бот, Чат-бот, Bots, Длиннопост

Дополнительно: триггеры на то и триггеры, что работают автономно (без участия пользователя или разработчика, с закрытым доком или чатом. В любой ситуации сообщение будет отправлено в чат в установленное время с установленной частотой.

Показать полностью 11
[моё] Telegram Telegram бот Google Таблицы Бот Чат-бот Bots Длиннопост
20
59
SensaiKudisai
SensaiKudisai
3 года назад
MS, Libreoffice & Google docs

Создание библиотеки в гугл скриптах⁠⁠

В Гугл скриптах, как и в других языках программирования, есть возможность использовать библиотеки.

Что такое библиотека? Это набор функций и методов, которые часто используются программистами в разных программах. Чтобы не создавать одну и ту же функцию дважды или больше раз, достаточно один раз сохранить ее в библиотеку и подключать библиотеку к новому коду с уже написанными стандартными функциями.


Го к примерам.

В посте про создание телеграм бота мы использовали только три функции, и эти функции стандартные для любого бота. Следовательно, чтобы при создании второго, третьего… десятого бота не переписывать эти функции снова и снова, давайте просто сохраним их в библиотеку.


Создаем новые ГТ и скрипт в ней

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Пропишем функцию send(msg, chat_id) :


function send (msg, chat_id, api) {

//Отправляет сообщения в тлг. На вход функции дать сообщение и ID чата, в который нужно провести отправку

var payload = {

'method': 'sendMessage',

'chat_id': String(chat_id),

'text': msg,

'parse_mode': 'HTML'

}

var data = {

"method": "post",

"payload": payload

}

UrlFetchApp.fetch('https://api.telegram.org/bot' + api + '/', data);

}


Сохраняем проект и делаем деплой

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Кликаем по шестеренке и выбираем Library

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Кликаем Deploy внизу окна и видим ссылку на библиотеку

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Из всей ссылки нам нужен только id, который зашит между /d/ и /4 (согласно скрину выше) - 1iJ_IOEicfGzTlfbhDkcKIcBBEbh9UJ8WLf1FRQZ1Wu_Wnoqw6OBtITjZ. Копируем свой ид и идем дальше.


Создаем новые гугл таблицу и скрипт. В скрипте прописываем глобальные переменные

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Помним, что значения этих переменных у вас будут свои.


Попробуем добавить тот же функционал, что и в посте про создание бота, с отправкой сообщения в чат телеграма. Но в этот раз мы не будем создавать функцию send(), а подключим библиотеку, в которой она уже есть.


Добавляем библиотеку

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

В открывшемся окне вставляем ID библиотеки (не ссылку, а ид) и кликаем Look up

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Если подключение библиотеки прошло успешно, в окне появятся дополнительные поля выбора версии и указания идентификатора.


Название идентификатора меняем на короткое и понятное и кликаем Add.

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

В результате в списке библиотек видим новую библиотеку

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Напоминаю, что в библиотеке у нас 1 функция. К ней можно обратиться следующим образом: имяБиблиотеки.имяФункции

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Когда вы прописываете имя библиотеки и ставите точку, вы видите список всех доступных функций. В нашем случае это только функция send. Выбираем ее и прописываем передаваемые параметры:

Demo.send("Hello World", chat_id, API_TOKEN)

Сохраняем проект, кликаем Deploy, обновляем Api_link, выполняем функцию api_connector и идем тестить работу этого бота (этот алгоритм действий также подробнее описан в статье про создания бота).

Новый бот отправляет сообщение в чат с помощью функции, которая зашита в библиотеке.

Создание библиотеки в гугл скриптах Telegram, Bots, Бот, Telegram бот, Google Таблицы, Библиотека, Длиннопост

Таким образом, в ту же библиотеку можно добавить ряд стандартных функций и к новым скриптам подключать уже написанные функции, не создавая их снова.

Показать полностью 11
[моё] Telegram Bots Бот Telegram бот Google Таблицы Библиотека Длиннопост
5
316
SensaiKudisai
SensaiKudisai
3 года назад
MS, Libreoffice & Google docs

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3)⁠⁠

Всем ку

Комбинация из ТЛГ и ГТ, простота подключения КМК делает из ГТ офигенный инструмент автоматизации.

Тайм-менеджмент, таск-менеджмент, учёт финансов, объявления, пересылка событий - всё это создается и довольно быстро настраивается. Главное - это становится полезным не только в бизнесе, но и для обычных чатлан.

Пост ориентирован прежде всего на людей, которые только познают ГТ и на первых порах не требует знания гугл скриптов. В этом посте будет только первичная настройка и подключение. В следующих постах рассмотрю всё что описал выше (как трекать время, задачи, финансы и т.д. и как это настроить под себя).

Для начала находим отца всех ботов @botfather в телеге.

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост
Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

После старта бота botftaher выведет список команд. Здесь нам интересна команда создания нового бота /newbot.

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Порядок очень простой: создать бота, назвать его человеческим языком, задать ему username. В результате получаем API токен нашего бота (1860347610:AAH1q6eqTPnVh0qe6mQWidNSTELcprXEfOk). Он-то нам и нужен.

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Теперь переходим к гугл таблице. Создаем новую таблицу, переходим в пункт меню Инструменты/Tools -> Редактор скриптов/ Script editor.

Должно получиться вот это:

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост
Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Затираем дефолтный код и вставляем следующий скрипт:


const API_TOKEN = '1860347610:AAH1q6eqTPnVh0qe6mQWidNSTELcprXEfOk'

const DOC = SpreadsheetApp.openById(‘10W0T9eOP_NN_6g4qyEJzWjm4nkKRN2vyUOnpx73f-N0’);

function doPost(e) {

var update = JSON.parse(e.postData.contents);

//нам нужен только тип "сообщение"

if (update.hasOwnProperty('message')) {

var msg = update.message;

var chat_id = msg.chat.id;

var text = msg.text;

var msg_array = msg.text.split(" ");

var date = (msg.date/86400)+25569.125;

var user = msg.from.username;

if (msg_array[0] == "/hello") {

send("Hello World", chat_id)

}

}

}

function send (msg, chat_id) {

//Отправляет сообщения в тлг. На вход функции дать сообщение и ID чата, в который нужно провести отправку

var payload = {

'method': 'sendMessage',

'chat_id': String(chat_id),

'text': msg,

'parse_mode': 'HTML'

}

var data = {

"method": "post",

"payload": payload

}

UrlFetchApp.fetch('https://api.telegram.org/bot' + API_TOKEN + '/', data);

}


Обращаем внимание на переменные DOC и API_TOKEN (выделено жирным). Значения переменных необходимо исправить на ваши значения.


Таким образом:

1) меняем ID гугл таблицы (находится в строке адреса после /d/)

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост
Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

2) меняем токен бота, который мы получили при его создании выше

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Круто! Львиная доля работы уже проделана.

Следующим важным моментом является регистрация вебхука (webhook).

Добавим следующий код к нашему скрипту:


function api_connector () {

const App_link = "";

UrlFetchApp.fetch("https://api.telegram.org/bot"+API_TOKEN+"/setWebHook?url="+App_link);

}


Переменную App_link пока оставляем пустой. Следующий шаг - это генерация значения для нее.


Сохраняем наш код и кликаем Deploy.

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

В открывшемся окне кликаем по шестеренке и выбираем Web app

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

В поле Who has access выбираем Anyone

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

И кликаем Deploy.


При первом запуске приложение попросит авторизации. Проделываем это упражнение.


Получаем следующее:

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Здесь нам нужен URL в самом конце. Копируем его и вставляем в качестве значения переменной App_link.


Теперь функция должна выглядеть следующим образом:


function api_connector () {

const App_link = "https://script.google.com/macros/s/AKfycbznvI6P0sc4vrIm7GW6C...";

UrlFetchApp.fetch("https://api.telegram.org/bot"+API_TOKEN+"/setWebHook?url="+App_link);

}


Снова сохраняем код и запускаем функцию api_connector:

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост
Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

И наконец переходим к боту в телеге! Запускаем, отправляем команду /hello и видим результат.

Подключение телеграм бота к гугл табличкам - обновленный пост (GS3) Google Таблицы, Telegram бот, Telegram, Бот, Bots, Длиннопост

Теперь подробно по коду. В коде всего 3 функции:


doPost(e)

send (msg, chat_id)

api_connector ()


doPost - это стандартная функция при работе с телеграм ботами, в которую зашиваются ответные действия от бота при отправке сообщения в чат с ним.

В нашем случае, если мы отправляем команду /hello, бот отвечает Hello World, вызывая функцию send. Это все его действия.


send - функция, которая непосредственно осуществляет отправку сообщения в чат. Функция имеет параметры msg (текст сообщения) и chat_id (ид чата, в который осуществляется отправка).


api_connector - функция подключения вебхука

Показать полностью 16
[моё] Google Таблицы Telegram бот Telegram Бот Bots Длиннопост
34
142
ofcWeKnow
ofcWeKnow
3 года назад
Лига Палеонтологии

Все динозавры в одной таблице. Часть 3⁠⁠

Все динозавры в одной таблице. Часть 1

Все динозавры в одной таблице. Часть 2


В сегодняшней серии: крохотные компсогнатиды и гигантские тираннозавриды, красноярец килеск и абсолютное лидерство Китая.


176 динозавров в таблице. Из, я не знаю, 2000-3000. На этот раз таблица пополнилась компсогнатидами и самыми мощными, знаменитыми и крутыми тираннозавроидами. Если тираннов представлять не надо, то про компсогнатов скажу пару слов. Это небольшие хищные динозавры размером немногим больше кошки, иногда с крупную собаку. Компсогнаты очень похожи на птиц, что и навело учёных на мысль родства птиц и динозавров.

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Синокаллиоптерикс из компсогнатид

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Нанукзавр из тираннозаврид

Тираннозавроиды (несколько семейств, включающие в себя тираннозавров, процератозавров и пр) хорошенько так повлияли на средний вес всех динозавров в таблице. Если в первом посте средний вес ящеров составлял 35 кг, во втором посте он вырос до 160 кг, то сейчас средний динозавр весит 462 кг. Такие процератозавриды, как юйтиранн и синотиранн весят более тонны, а уж тираннозавриды (тираннозавр, тарбозавр и чжучэнтиранн) имеют массу более 5 тонн. Средний вес тираннозавров составил более 3 тонн.

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Процератозаврид юйтиранн. 7,5 метров, 1100 кг

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Тираннозаврид тарбозавр. 12 метров, 5000 кг

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Все 11 представителей семейства тираннозавридов

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

10 самых тяжёлых динозавров из таблицы на сегодняшний день

География! Люблю смотреть на географию находок. В таблицу попали новые страны первых находок: Германия, Австралия, Португалия, Италия и наконец-то Россия. Россия вошла красиво, с очень древним тираннозавроидом килеском. Найден он был в Красноярском крае, Берёзовском карьере Шарыповского района. Красноярск, привет! Это примитивный процератозавр весьма крупных размеров. Хищник весил около 700 кг и был в дину около 5 метров.

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Килеск

Китай же продолжает лидировать. Более трети всех находок, что я внёс в таблицу, из Китая. США сокращает разницу с Монголией. Ну с чисто североамериканским семейством тираннозавридов оно и понятно. В дальнейшем я буду отмечать на карте не только страну, но и формации. Тогда география находок будет прям совсем красивой.

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

Лидеры: Китай - 68 находок; Монголия - 34; США - 28; Канада - 14; Аргентина - 10; остальные - 5 и менее

Посмотрим, сколько я внёс динозавров за 3 дня работы. Я внёс почти всех целурозавров: компсогнатидов, тиранозавроидов и манирапторов. Как это выглядит в масштабе всех динозавров?

Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост
Все динозавры в одной таблице. Часть 3 Динозавры, Палеонтология, Google Таблицы, Аналитика, Диаграмма, Длиннопост

М-да. Работы ещё много. Очень много. Но результаты будут куда более интересными. Так что продолжаем-с! Далее нас ждёт целый вагон гигантских хищников: аллозавры, кархародонтозавры, мегалозавры и т.п.


Ссылка на табличку для просмотра.


Отдельное спасибо @Nevrus, что вызвался помочь.


Источники:


https://en.wikipedia.org/wiki/List_of_dinosaur_genera

http://fossilworks.org/


Вы можете поддержать меня рублём:

Яндекс-Юmoney (4100 1164 4381 2085) или Сбер: 4279 3806 7898 0816

Показать полностью 10
[моё] Динозавры Палеонтология Google Таблицы Аналитика Диаграмма Длиннопост
25
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии