• Название шрифта из роликов Figma?

    takezi
    @takezi
    Intelligent people are full of doubts.
    Whyte Inktrap
    Ответ написан
    Комментировать
  • Как грамотно пропарсить скопированные колонки с google sheets?

    zkrvndm
    @zkrvndm
    Архитектор решений
    У меня однажды возникла задача, спарсить данные с Google таблицы не используя их API.

    В итоге, вот какое решение я придумал:
    googleTableParse('https://docs.google.com/spreadsheets/d/<код документа>/edit');
    
    // Функция для парсинга Google таблицы:
    
    async function googleTableParse(link) {
    	
    	var url = link.replace(/edit$/g, 'export?format=zip');
    	var response = await fetch(url);
    	var zip = await response.blob();
    	var archive = await new JSZip().loadAsync(zip);
    	var files = Object.keys(archive.files);
    	var lists = Object.create(null);
    	for (var n = 0; n < files.length; n++) {
    		if (!files[n].includes('/') && files[n].includes('.html')) {
    			var blob = await archive.files[files[n]].async('blob');
    			var html = await blob.text();
    			var name = files[n].replace(/\.html$/g, '');
    			lists[name] = tableParser(html);
    		}
    	}
    	
    	console.log('Таблица и все листы в нём успешно спарсены:');
    	console.dir(lists);
    	
    }
    
    // Функция для парсинга html-кода таблицы из скачанного архива:
    
    function tableParser(html) {
    	
    	var doc = new DOMParser().parseFromString(html, "text/html");
    	
    	var th = doc.querySelector('table > tbody > tr').querySelectorAll('th, td');
    
    	var title = [];
    
    	for (var i = 0; i < th.length; i++) {
    
    		title.push(th[i].innerText);
    
    	}
    	
    	var tr = doc.querySelectorAll('table > tbody > tr');
    	
    	var array = [];
    	
    	for (var i = 1; i < tr.length; i++) {
    
    		var td = tr[i].querySelectorAll('th, td');
    		
    		var obj = {};
    		var add = 0;
    		
    		for (var y = 1; y < td.length; y++) {
    			
    			td[y].innerHTML = td[y].innerHTML.replace(/\<br\>/g, '{перенос строки}');
    			obj[title[y]] = td[y].innerText.replace(/\{перенос строки\}/g, "\n").trim();
    			if (obj[title[y]] !== '') {
    				add = 1;
    			}
    			
    		}
    		
    		if (add) {
    			array.push(obj);
    		}
    
    	}
    	
    	return array;
    	
    }


    Для работы функции должно выполнятся 2 условия:
    1. Должна быть подключена библиотека JSZip, которая позволяет работать с zip-архивами на JavsScript
    2. Каким-то образом вы должны добавить разрешающий заголовок Access-Control-Allow-Origin на все запросы к серверам Google. Лично я это сделал, через использование расширения и файла background.js но это не единственный вариант. Можно для выполнения кода использовать NodeJS или как-то проксировать процесс закачки файла.
    Ответ написан
    Комментировать
  • Как грамотно пропарсить скопированные колонки с google sheets?

    Psixodelik
    @Psixodelik
    Преподаватель на Hexlet
    Можно сделать через регулярку. При условии, что объекты строки будут иметь одинаковую структуру.

    https://repl.it/@NikitaMikhailov/regex
    Ответ написан
    Комментировать
  • Есть ли готовые админ панели для проекта на Vue.js?

    evgensenin
    @evgensenin
    Yii2 || Laravel, vue & nuxt
    Ответ написан
    Комментировать