Программное обеспечение

Возможно ли настроить выгрузку данных из Google таблиц в телеграм бот в формате PDF?

Приветствую! Я учусь работать с Google App Script в связке с телеграм ботом. Знаю, что можно настроить бота чтобы он по запросу выдавал какую-либо информацию из Таблицы к которой привязан. Подскажите, а есть ли возможность получать эти данные в формате PDF файла? Чтобы бот, например, мне по запросу прислал диапазон ячеек с нужными данными в виде файла.
Олег Олег
Олег Олег
711
Пример программы на Google App Script, который будет извлекать данные из Google таблицы и отправлять их в телеграм бот в формате PDF. Для этого необходимо выполнить следующие шаги:

1. Создайте новый проект на Google App Script и назовите его, например, "Google Sheets to Telegram Bot".
2. Скопируйте и вставьте следующий код:
 function sendPdfToTelegramBot() { 
// Укажите ссылку на Google таблицу, из которой необходимо получить данные
var sheetUrl = "https://docs.гугл(замени гугл на google).com/spreadsheets/d/1AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVv/edit#gid=0";
// Укажите ID чата вашего телеграм бота
var chatId = "123456789";
// Укажите токен вашего телеграм бота
var token = "ваш_токен";

// Получаем данные из Google таблицы
var sheet = SpreadsheetApp.openByUrl(sheetUrl).getActiveSheet();
var data = sheet.getDataRange().getValues();

// Создаем PDF-файл
var pdfBlob = createPdf(data);

// Отправляем PDF-файл в чат телеграм бота
var url = "https://api.telegram.org/bot" + token + "/sendDocument";
var formData = {
"chat_id": chatId,
"document": pdfBlob
};
var options = {
"method": "post",
"payload": formData
};
UrlFetchApp.fetch(url, options);
}

function createPdf(data) {
// Создаем PDF-файл с помощью библиотеки Google Drive API
var folder = DriveApp.getFolderById("ваш_ID_папки_в_диске");
var fileName = "Отчет.pdf";
var pdfFile = folder.createFile(pdf(fileName, data));

// Возвращаем PDF-файл как Blob
return pdfFile.getBlob();
}

function pdf(fileName, data) {
// Создаем PDF-файл с помощью библиотеки pdfmake
var fonts = {
Roboto: {
normal: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.70/fonts/Roboto/Roboto-Regular.ttf',
bold: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.70/fonts/Roboto/Roboto-Medium.ttf',
italics: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.70/fonts/Roboto/Roboto-Italic.ttf',
bolditalics: 'https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.70/fonts/Roboto/Roboto-MediumItalic.ttf'
}
};
var docDefinition = {
content: [
{ text: 'Отчет', style: 'header' },
{ text: 'Данные из Google таблицы', style: 'subheader' },
{
style: 'table',
table: {
headerRows: 1,
body: data
}
}
],
styles: {
header: {
fontSize: 18,
bold: true,
alignment: 'center'
},
subheader: {
fontSize: 14,
bold: true,
margin: [0, 15, 0, 5]
},
table: {
margin: [0, 5, 0, 15]
}
},
defaultStyle: {
font: 'Roboto'
}
};

var pdfDoc = pdfMake.createPdf(docDefinition, {}, fonts);

// Конвертируем PDF-документ в Blob
var pdfBlob = pdfDoc.getBlob();
pdfBlob.setName(fileName);

return pdfBlob;
}
3. Настройте доступ к Google Drive API в вашем проекте на Google App Script, чтобы можно было создавать PDF-файлы в папке вашего Google Drive.
4. Настройте доступ к Telegram Bot API, чтобы можно было отправлять сообщения и документы в вашего телеграм бота.
5. Запустите функцию sendPdfToTelegramBot() из редактора скриптов на Google App Script. Это создаст PDF-файл с данными из вашей Google таблицы и отправит его в ваш телеграм бот.

Обратите внимание, что перед запуском кода вам необходимо заменить значения переменных sheetUrl, chatId, token и ваш_ID_папки_в_диске на соответствующие значения для вашей таблицы и телеграм бота. Кроме того, для работы библиотеки pdfmake необходимо подключение к Интернету.
Игорь Степаньков
Игорь Степаньков
3 316
Лучший ответ
Олег Олег Большое спасибо!

Похожие вопросы