Создаем свой ИИ Co-pilot к Google Calendar

Создаем свой ИИ Co-pilot к Google Calendar

В современном мире, где время — это деньги, автоматизация рутинных задач становится все более важной. В этой статье мы расскажем, как можно автоматизировать выполнение задач в Google Календаре с помощью скрипта Google Apps Script и любого ИИ сервиса (в примере использован ProTalk). Этот скрипт позволит вам создавать события в календаре, которые будут автоматически выполнять определенные действия, такие как отправка запросов в API и обновление информации в событии.

Что такое Google Apps Script?

Google Apps Script — это облачная платформа для создания скриптов, которая позволяет автоматизировать задачи в Google Workspace (ранее G Suite). С помощью Google Apps Script вы можете писать скрипты на языке JavaScript, которые взаимодействуют с различными сервисами Google, такими как Google Календарь, Google Таблицы, Google Документы и другие.

Что такое ProTalk?

ProTalk — это сервис, который позволяет создавать и управлять ботами для выполнения различных задач. В данном случае мы будем использовать ProTalk для выполнения команд, указанных в событиях Google Календаря.

Как это работает?

  1. Создание события в Google Календаре: Вы создаете событие в Google Календаре с заголовком, содержащим команду для бота. Например, заголовок может выглядеть так: @20040 2+2. Здесь 20040 — это идентификатор бота, а 2+2 — команда, которую бот должен выполнить.
  2. Скрипт Google Apps Script: Скрипт периодически проверяет события в календаре. Если он находит событие с командой для бота, он отправляет запрос в API ProTalk с этой командой.
  3. Обработка ответа: После получения ответа от API ProTalk, скрипт обновляет описание события, добавляя результат выполнения команды.
  4. Пометка события как отработанного: Чтобы избежать повторного выполнения одной и той же команды, скрипт помечает событие как отработанное, добавляя специальный тег в описание.

Как настроить скрипт?

Шаг 1: Создание нового проекта в Google Apps Script

  1. Откройте Google Apps Script.
  2. Нажмите на кнопку "Новый проект".

Шаг 2: Вставка скрипта

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

function processCalendarEvents() { const calendar = CalendarApp.getDefaultCalendar(); const timeZone = Session.getScriptTimeZone(); // Получаем часовой пояс скрипта const now = new Date(); const endTime = new Date(now.getTime() + 1 * 60 * 1000); // Проверяем события на следующую минуту Logger.log(`Текущее время: ${Utilities.formatDate(now, timeZone, 'yyyy-MM-dd HH:mm:ss')}`); Logger.log(`Конечное время: ${Utilities.formatDate(endTime, timeZone, 'yyyy-MM-dd HH:mm:ss')}`); // Список ботов ProTalk let bots = { "20040": "YOUR_BOT_TOKEN" // Замените YOUR_BOT_TOKEN на ваш реальный токен бота ProTalk }; const botPattern = new RegExp(`@(${Object.keys(bots).join('|')})`, 'i'); // Получаем все актуальные события const events = calendar.getEvents(now, endTime); Logger.log(`Найдено ${events.length} событий для обработки.`); events.forEach(event => { const title = event.getTitle(); const description = event.getDescription(); const eventStartTime = event.getStartTime(); Logger.log(`Обрабатываем событие: ${title}, Дата: ${Utilities.formatDate(eventStartTime, timeZone, 'yyyy-MM-dd HH:mm:ss')}, Описание: ${description}`); if (title && title.match(botPattern) && !description.includes('[ОТРАБОТАНО]')) { const botId = title.match(botPattern)[1]; console.info(botId) if (bots[botId]) { const originalText = title + '\n' + description; console.info('originalText', originalText) const botToken = bots[botId]; // Обновляем название события event.setTitle(`@${botId} думает...`); // Выполняем запрос let lastResponse = ""; let allSuccess = true; const chatId = "gc_" + Date.now(); try { // Убираем @botId из команды let mainCommand = originalText.replace(`@${botId}`, '').trim(); // Разделяем команду на части по ## const messageParts = mainCommand.split('##').map(p => p.trim()).filter(p => p); // Отправляем все части последовательно с одним chat_id for (let i = 0; i < messageParts.length; i++) { const part = messageParts[i]; const response = UrlFetchApp.fetch(`https://us1.api.pro-talk.ru/api/v1.0/ask/${botToken}`, { method: "post", contentType: "application/json", payload: JSON.stringify({ bot_id: botId, chat_id: chatId, message: part }), muteHttpExceptions: true }); const responseData = JSON.parse(response.getContentText()); if (responseData.done) { lastResponse = responseData.done; } else { lastResponse = "Ошибка: " + (responseData.error || "Неизвестная ошибка"); allSuccess = false; break; // Прерываем цепочку при ошибке } } } catch (e) { lastResponse = "Ошибка выполнения: " + e; allSuccess = false; } // Обновляем описание события и помечаем его как отработанное if (allSuccess) { event.setDescription(`✅ ${originalText}\n\n${lastResponse}\n\n[ОТРАБОТАНО]`); event.setTitle(`✅ @${botId}`); } else { event.setDescription(`❌ ${originalText}\n\n${lastResponse}\n\n[ОТРАБОТАНО]`); event.setTitle(`❌ @${botId}`); } } } }); Logger.log(`Обработано ${events.length} событий`); }

Шаг 3: Установка часового пояса

  1. В редакторе скриптов выберите функцию setTimeZoneToMoscow.
  2. Нажмите кнопку "Выполнить" (Run), чтобы установить часовой пояс Москвы.

Шаг 4: Установка триггера

  1. В редакторе скриптов выберите функцию createTimeDrivenTrigger.
  2. Нажмите кнопку "Выполнить" (Run), чтобы установить триггер, который будет запускать скрипт каждую минуту.

Как использовать скрипт?

  1. Создайте событие в Google Календаре: Укажите в заголовке события команду для бота. Например: @20040 2+2.
  2. Дождитесь выполнения скрипта: Скрипт будет автоматически проверять события каждую минуту. Когда он найдет событие с командой для бота, он отправит запрос в API ProTalk и обновит описание события с результатом выполнения команды.

Заключение

С помощью этого скрипта вы можете автоматизировать выполнение задач в Google Календаре, используя мощь ботов ProTalk. Это позволит вам сэкономить время и усилия, автоматизировав рутинные задачи. Просто скопируйте скрипт, замените токен бота на свой и настройте триггер — и вы готовы к работе!

Если у вас есть вопросы или предложения, пишите мне в телеграм.

3
Начать дискуссию