Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Какие столбцы попадут в CSV
- const cols = [1, 2, 3, 4];
- //Сколько строк с данными оступаем
- const sliceRows = 1;
- //Разделитель
- const del = ';';
- // В какую папку сохраняем результат, URL
- const folderUrl = 'https://drive.google.com/drive/folders/1E8d_EFpeDJrO22nVFWaptoD-FpfV_tEa';
- // На какие телеграм chat_id отправляем сообщение о том, что файл создан
- const ids = '320117024';
- // Токен телеграм бота
- const botToken = "45783412";
- // Charset
- const charset = 'Windows-1251';
- ////////////////////
- function onOpen(e){
- SpreadsheetApp.getUi()
- .createMenu("/ меню запуска скриптов /")
- .addItem("Активный лист --> CSV", "main")
- .addToUi();
- }
- ////////////////////
- function main(){
- const ss = SpreadsheetApp.getActive();
- const sh = ss.getActiveSheet();
- const blob = createNewBlob(sh, charset, 'text/csv');
- const [url, name] = upload(blob, folderUrl);
- ids.split(",").map(g => sendMessage(g, `Привет, файл ${name} создан\n${url}`));
- }
- function createNewBlob(sh, charset, contentType){
- let name = d2s(new Date, 'YYMMdd-HHmm-');
- name += sh.getName() + '.CSV';
- const d = sh.getDataRange()
- .getValues()
- .slice(sliceRows);
- const dFilter = filtered(d, cols);
- const preBlob = dFilter
- .map(g => g.join(del))
- .join('\n');
- return Utilities
- .newBlob('')
- .setDataFromString(preBlob, charset)
- .setContentType(contentType)
- .setName(name);
- }
- function upload(blob, folderUrl){
- const f = DriveApp
- .getFolderById(getIdFromUrl(folderUrl))
- .createFile(blob);
- return [f.getUrl(), f.getName()];
- }
- function d2s(date, f){return Utilities.formatDate(date, Session.getScriptTimeZone(), f)};
- function filtered(array, cols){
- return [].concat(...[array.map(row =>
- [].concat(...cols.map(y =>
- row[y-1])))]);
- }
- function sendMessage(chatId, text) {
- let data = {
- method: 'post',
- contentType: 'application/json',
- muteHttpExceptions: true,
- payload: JSON.stringify({
- chat_id: chatId,
- text: text,
- parse_mode: "Markdown",
- })
- }
- const u = `https://api.telegram.org/bot${botToken}/sendMessage`;
- console.log(UrlFetchApp.fetch(u, data));
- }
- function getIdFromUrl(url) {
- return url.match(/[-\w]{25,}/);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement