Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров546
Пример выполненного задания ИИ ботом в Google Calendar
Пример выполненного задания ИИ ботом в 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. Это позволит вам сэкономить время и усилия, автоматизировав рутинные задачи. Просто скопируйте скрипт, замените токен бота на свой и настройте триггер — и вы готовы к работе!

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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Рейтинг0
Комментарии0

Публикации

Ближайшие события