Отправка изображения графика из Google Таблиц в Telegram через бота
Я пытаюсь отправлять изображение графика в telegram. Для этого я получил ссылку на него в Google Таблицах (https://docs.google.com/spreadsheets/d/e/2PACX-1vT2m7WvYiTxSJ8uXGmnSSoYC4UrakMRlycj2JtDcSc34gpz1QixZwNSsW0MCgbm6PHnYSPoBRjUzYgp/pubchart?oid=182564157&format=image)
Выглядит это так (и обновляется по мере обновления данных в таблице):

Далее я отправляю запрос в telegram следующего вида:
UrlFetchApp.fetch(encodeURI("https://api.telegram.org/bot" + botApi +"/sendPhoto?chat_id=" + channel + "&photo=" + "https://docs.google.com/spreadsheets/d/e/2PACX-1vT2m7WvYiTxSJ8uXGmnSSoYC4UrakMRlycj2JtDcSc34gpz1QixZwNSsW0MCgbm6PHnYSPoBRjUzYgp/pubchart?oid=182564157&format=image" + "&caption=" + "График" + "&parse_mode=html"));
На что получаю следующий ответ:

Телеграму чем-то не нравится именно эта ссылка, так как если "скормить" ему какую-нибудь ссылку с .png на конце, то он успешно отправляет это изображение, а здесь почему-то не хочет.
Подскажите, как можно побороть эту проблему?
Ответы (2 шт):
Потому что это не картинка.
Попробуйте отправить Blob
function getChartImage_() {
return SpreadsheetApp.openById('bookId')
.getSheetByName('sheetName')
.getCharts()
[0].getBlob();
}
const photo = getChartImage_();
sendPhoto(chatId, photo);
Где
sendPhoto(chatId, photo, caption) {
return getResponse('sendPhoto', {
chat_id: '' + chatId,
photo: photo,
caption: caption || '',
}).getContentText();
}
getResponse(method, data) {
const httpResponse = UrlFetchApp.fetch(
'https://api.telegram.org/bot' + token + '/' + method,
{
method: 'post',
payload: data,
muteHttpExceptions: true,
});
return httpResponse;
}
Google Apps Script Library для работы с API Telegram.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Название листа");
// пример, отправка графика (фото .png) с листа Google Sheets
const blob = sheet.getCharts()[0].getBlob();
Bot.sendPhoto({
chat_id: chat_id,
photo: blob,
contentType: "multipart/form-data" // указать обязательно
});