
В современном мире, где время — это деньги, автоматизация рутинных задач становится все более важной. В этой статье мы расскажем, как можно автоматизировать выполнение задач в 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 Календаря.
Как это работает?
Создание события в Google Календаре: Вы создаете событие в Google Календаре с заголовком, содержащим команду для бота. Например, заголовок может выглядеть так: @20040 2+2. Здесь 20040 — это идентификатор бота, а 2+2 — команда, которую бот должен выполнить.
Скрипт Google Apps Script: Скрипт периодически проверяет события в календаре. Если он находит событие с командой для бота, он отправляет запрос в API ProTalk с этой командой.
Обработка ответа: После получения ответа от API ProTalk, скрипт обновляет описание события, добавляя результат выполнения команды.
Пометка события как отработанного: Чтобы избежать повторного выполнения одной и той же команды, скрипт помечает событие как отработанное, добавляя специальный тег в описание.
Как настроить скрипт?
Шаг 1: Создание нового проекта в Google Apps Script
Откройте Google Apps Script.
Нажмите на кнопку "Новый проект".
Шаг 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: Установка часового пояса
В редакторе скриптов выберите функцию setTimeZoneToMoscow.
Нажмите кнопку "Выполнить" (Run), чтобы установить часовой пояс Москвы.
Шаг 4: Установка триггера
В редакторе скриптов выберите функцию createTimeDrivenTrigger.
Нажмите кнопку "Выполнить" (Run), чтобы установить триггер, который будет запускать скрипт каждую минуту.
Как использовать скрипт?
Создайте событие в Google Календаре: Укажите в заголовке события команду для бота. Например: @20040 2+2.
Дождитесь выполнения скрипта: Скрипт будет автоматически проверять события каждую минуту. Когда он найдет событие с командой для бота, он отправит запрос в API ProTalk и обновит описание события с результатом выполнения команды.
Заключение
С помощью этого скрипта вы можете автоматизировать выполнение задач в Google Календаре, используя мощь ботов ProTalk. Это позволит вам сэкономить время и усилия, автоматизировав рутинные задачи. Просто скопируйте скрипт, замените токен бота на свой и настройте триггер — и вы готовы к работе!
Если у вас есть вопросы или предложения, пишите мне в телеграм.