Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //папка для сохранения файла, если не заполнено – файл будет сохранен в корень диска
- const folderUrl = '';
- function onOpen(e) {
- SpreadsheetApp.getUi()
- .createMenu("🧞♂️ – скрипты")
- .addItem("📊 сохранить лист в xlsx!", 'saveXlsx')
- .addItem("📊 скачать лист в xlsx!", 'downloadXlsx')
- .addSeparator()
- .addItem("🗞 сохранить лист в pdf!", 'savePdf')
- .addItem("🗞 скачать лист в pdf!", 'downloadPdf')
- .addSeparator()
- .addItem("📄 сохранить лист в csv!", 'saveCsv')
- .addItem("📄 скачать лист в csv!", 'downloadCsv')
- .addToUi();
- }
- function saveXlsx() {
- workWithSheet('save', 'xlsx')
- }
- function savePdf() {
- workWithSheet('save', 'pdf')
- }
- function saveCsv() {
- workWithSheet('save', 'csv')
- }
- function downloadXlsx() {
- workWithSheet('download', 'xlsx')
- }
- function downloadPdf() {
- workWithSheet('download', 'pdf')
- }
- function downloadCsv() {
- workWithSheet('download', 'csv')
- }
- function workWithSheet(type, format) {
- const ss = SpreadsheetApp.getActive();
- const shActive = ss.getActiveSheet();
- let shWork;
- if (format == 'xlsx') {
- shWork = shActive.copyTo(ss);
- shWork.getDataRange().setValues(shWork.getDataRange().getValues());
- shWork.setName(`(to XLSX) ${shActive.getName()}`);
- SpreadsheetApp.flush();
- }
- const url = `https://docs.google.com/spreadsheets/export?id=${ss.getId()}&gid=${shWork ? shWork.getSheetId() : shActive.getSheetId()}&exportFormat=${format}`
- if (type == 'save') {
- ss.toast(`URL-папки для сохранения можно изменить во 2ой строке кода`);
- const blob = getBlob(url);
- const folder = folderUrl ? DriveApp.getFolderById(getIdFromUrl(folderUrl)) : DriveApp.getRootFolder();
- const urlFile = folder.createFile(blob)
- .setName(`${shActive.getName()}, ${d2s(new Date(), 'yy-MM-dd, hh-mm')}`).getUrl();
- ss.toast(urlFile, 'Ваш файл');
- } else if (type == 'download') {
- getDownload(url);
- }
- if (shWork) {
- Utilities.sleep(4000);
- ss.deleteSheet(shWork);
- }
- }
- function getDownload(convertUrl) {
- var template = HtmlService.createTemplate(stringHtml);
- template.url = convertUrl;
- template = template.evaluate();
- SpreadsheetApp.getUi().showModelessDialog(template, 'Сохранение файла');
- }
- function getBlob(url) {
- var token = ScriptApp.getOAuthToken();
- var response = UrlFetchApp.fetch(url, {
- headers: {
- 'Authorization': 'Bearer ' + token
- }
- });
- return response.getBlob();
- }
- function getIdFromUrl(url) {
- return url.match(/[-\w]{25,}/);
- }
- function d2s(date, f = 'dd-MM-yy') {
- return Utilities.formatDate(date, Session.getScriptTimeZone(), f)
- };
- const stringHtml =
- `<!DOCTYPE html>
- <html>
- <head>
- <base target="_top">
- </head>
- <body>
- <iframe src=<?= url ?> /iframe>
- </body>
- </html>`
Add Comment
Please, Sign In to add comment