169 похожих чатов

Всем привет. Подскажите, настраиваю app script, чтобы делать выгрузку определенного

файл по расписанию в телеграм.

скрипт вроде как отрабаывает и даже кидается нужный файл, но он приходит без имени и в формате 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);

19 ответов

30 просмотров

А файл изначально, это что за файл ? И если файл именован кириллицей - телеграм бот не передаст эти символы, нужно сделать транслитерацию на латиницу

Василий- Автор вопроса
Alexander Макеев
А файл изначально, это что за файл ? И если файл ...

Просто "новый файл" - называется, а когда вручную сохраняю, то там вроде xlsx формат. Мне не особо важно наименованием я не понимаю почему он pdf предлагает вместо xlsx

Василий- Автор вопроса
Alexander Макеев
var fileName = file.getName() + "." + fileBlob.get...

Благодарю, чуть позже попробую

Василий- Автор вопроса
Alexander Макеев
ерунду я написал

Как тогда правильнее 😅

Василий
Как тогда правильнее 😅

Правильнее преобразовать файл из гугл таблиц в excel, получить blob, задать имя через setName() , указывая в имени расширение .xlsx.

Но об этом не было сразу сказано, что табличка гугл а не файл Эксель Хотя видимо это очевидно из возникшей проблемы

Alexander Макеев
Но об этом не было сразу сказано, что табличка гуг...

Это очевидно из того что человек написал про Новый файл.)

Василий
Как тогда правильнее 😅

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}`) } Вот с этим можете попробовать поработать

Василий- Автор вопроса
Василий- Автор вопроса
Alexander Макеев
function sheetToXLBlob(ssId, sheetname, newnameoff...

чтото тыкаюсь, но ни как не выходит стал вообще в html присылать (

Василий- Автор вопроса
Alexander Макеев
А покажите как передаёте аргументы

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); }

Василий
var fileName = "FILENAME.xlsx"; // Имя файла с р...

Откройте доступ к файлу по ссылке и попробуйте снова запустить.

Василий- Автор вопроса
Роман Игнатов
Откройте доступ к файлу по ссылке и попробуйте сно...

https://docs.google.com/spreadsheets/d/1cZ5zc_iVqK7p-RswpKtPn4b2DlNwwoNQ39k146rdXcQ/edit?usp=sharing

Василий- Автор вопроса
Роман Игнатов
Откройте доступ к файлу по ссылке и попробуйте сно...

Кажется работает, вот оно в чем проблема была...

Василий
Кажется работает, вот оно в чем проблема была...

В headers нужно будет передавать гугловский токен, если принципиально не открывать доступ по ссылке.

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

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
10
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Изменение типа с SomeException на String и правда удобней @cheese_hs . А вот такой вариант насколько некрасив еще? loadConfigDB :: IO (Either String ConfigDataBase) loadConfi...
Camara
7
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта