файл по расписанию в телеграм.
скрипт вроде как отрабаывает и даже кидается нужный файл, но он приходит без имени и в формате pdf, можете подсказать как исправить ?
Чтобы имя было и формат xlsx
var fileName = file.getName();
var fileBlob = file.getBlob();
var telegramUrl = "https://api.telegram.org/bot" + token + "/sendDocument";
var payload = {
method: "post",
payload: {
"chat_id": chatId,
"document": fileBlob,
"filename": fileName,
}
};
var response = UrlFetchApp.fetch(telegramUrl, payload);
А файл изначально, это что за файл ? И если файл именован кириллицей - телеграм бот не передаст эти символы, нужно сделать транслитерацию на латиницу
Просто "новый файл" - называется, а когда вручную сохраняю, то там вроде xlsx формат. Мне не особо важно наименованием я не понимаю почему он pdf предлагает вместо xlsx
var fileName = file.getName() + "." + fileBlob.getContentType()
Благодарю, чуть позже попробую
ерунду я написал
Как тогда правильнее 😅
Правильнее преобразовать файл из гугл таблиц в excel, получить blob, задать имя через setName() , указывая в имени расширение .xlsx.
Но об этом не было сразу сказано, что табличка гугл а не файл Эксель Хотя видимо это очевидно из возникшей проблемы
Это очевидно из того что человек написал про Новый файл.)
function sheetToXLBlob(ssId, sheetname, newnameoffile) { let format = 'xlsx'; let ss = SpreadsheetApp.openById(); let targetSheet = ss.getSheetByName(sheetname); let url = `https://docs.google.com/spreadsheets/export?id=${ssId}&gid=${targetSheet.getSheetId()}&exportFormat=${format}`; let blob = getBlob(url).getAs('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); return blob.setName(`${newnameoffile}.${format}`) } Вот с этим можете попробовать поработать
чтото тыкаюсь, но ни как не выходит стал вообще в html присылать (
А покажите как передаёте аргументы
var fileName = "FILENAME.xlsx"; // Имя файла с расширением .xlsx var ss = SpreadsheetApp.openById(fileId); var format = "xlsx"; var url = `https://docs.google.com/spreadsheets/export?id=${fileId}&exportFormat=${format}`; var fileBlob = UrlFetchApp.fetch(url).getBlob(); var telegramUrl = "https://api.telegram.org/bot" + token + "/sendDocument"; var payload = { method: "post", payload: { "chat_id": chatId, "document": fileBlob, "filename": fileName } }; var response = UrlFetchApp.fetch(telegramUrl, payload); }
Откройте доступ к файлу по ссылке и попробуйте снова запустить.
https://docs.google.com/spreadsheets/d/1cZ5zc_iVqK7p-RswpKtPn4b2DlNwwoNQ39k146rdXcQ/edit?usp=sharing
Кажется работает, вот оно в чем проблема была...
В headers нужно будет передавать гугловский токен, если принципиально не открывать доступ по ссылке.
Обсуждают сегодня