Бюджет: 500 UAH Срок: 1 день
Могу модифицировать макрос для обработки многих таблиц.
Нужно обсуждать детали.
Є скрипт який був записаний як макрос в гугл таблицях.
Потрібно його переписати, щоб він був виконаний для кожної таблиці в певній папці на Google Диск
і в кожній з цих таблиць результатом був такий самий як у прикладі.
Створено 3 нових аркуша, з трьома зведеними таблицями різного формату.
Приклад резултату скрипта https://docs.google.com/spreadsheets/d/18iAH6Q6nhx4Ph6yxytofYgSm4lIf7RuaeXU9m7FdzYM/edit?usp=sharing
Скрипт буде запускатися з AppsScript. (або інакше, якщо є більш простий варіант)
В папці тільки гугл таблиці. Всі таблиці мають однаковий формат., однакову назву першого листа для обробки.
Скрипт який треба переписати :
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
var sourceData = spreadsheet.getRange('1:1000');
spreadsheet.insertSheet(spreadsheet.getActiveSheet().getIndex() + 1).activate();
spreadsheet.getActiveSheet().setHiddenGridlines(true);
var pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
var pivotGroup = pivotTable.addRowGroup(11);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
var pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
spreadsheet.getRange('B:B').activate();
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00')
.setNumberFormat('#,##0.0')
.setNumberFormat('#,##0');
spreadsheet.getRange('A3').activate();
spreadsheet.getActiveSheet().setColumnWidth(1, 609);
spreadsheet.getRange('A:A').activate();
spreadsheet.getActiveRangeList().setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP);
spreadsheet.getActiveSheet().setName('Зведена по Клієнтам');
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName('Зведена по Клієнтам/Товарам');
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending();
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(30);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotGroup = pivotTable.addRowGroup(11);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
spreadsheet.getActiveSheet().setColumnWidth(1, 282);
spreadsheet.getActiveSheet().setColumnWidth(1, 222);
spreadsheet.getActiveSheet().setColumnWidth(2, 301);
spreadsheet.getRange('D:D').activate();
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00')
.setNumberFormat('#,##0.0');
spreadsheet.getRange('C:C').activate();
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00')
.setNumberFormat('#,##0.0')
.setNumberFormat('#,##0');
spreadsheet.getRange('E:E').activate();
spreadsheet.getActiveRangeList().setNumberFormat('#,##0.00')
.setNumberFormat('#,##0.0')
.setNumberFormat('#,##0');
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Зведена по Клієнтам'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Зведена по Клієнтам/Товарам'), true);
spreadsheet.duplicateActiveSheet();
spreadsheet.getActiveSheet().setName('Зведена по Товарам');
spreadsheet.getRange('B5').activate();
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotValue = pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.COUNTA);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotValue = pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.COUNTUNIQUE);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
spreadsheet.getActiveSheet().setColumnWidth(2, 169);
spreadsheet.getActiveSheet().setColumnWidth(1, 492);
spreadsheet.getActiveSheet().setColumnWidth(3, 67);
spreadsheet.getActiveSheet().setColumnWidth(4, 82);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.COUNTUNIQUE);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[0], []);
pivotTable = spreadsheet.getRange('A1').createPivotTable(sourceData);
pivotValue = pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.COUNTUNIQUE);
pivotValue = pivotTable.addPivotValue(32, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(30, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
pivotValue = pivotTable.addPivotValue(31, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
pivotGroup = pivotTable.addRowGroup(27);
pivotGroup.sortDescending()
.sortBy(pivotTable.getPivotValues()[1], []);
spreadsheet.getActiveSheet().setColumnWidth(2, 78);
Бюджет: 500 UAH Срок: 1 день
Могу модифицировать макрос для обработки многих таблиц.
Нужно обсуждать детали.
Всем привет, нужно создать сайт для создания ивентов и продажи билетов. Возможны варианты на готовом шаблоне, фреймворке или ваш вариант. Желательно, чтобы у вас был опыт работы в разработке сайтов для продажи билетов. Примеры сайтов вышлем в приватные сообщения. При необходимости создадим прототип. Если вы ранее работали над созданием подобных сайтов, пожалуйста, отправьте примеры в приватные сообщения. Детали обсудим в приватных сообщениях. Спасибо и хорошего дня!
Что мы считаем в проекте: Реализованная PnL, ROI и Win Rate для криптокошельков - насколько прибыльно кошелек торговал определенным токеном за выбранный период. На каких данных: история on-chain транзакций кошелька (свопы, переводы токенов) + рыночная цена токена на момент каждой сделки. Основной источник данных - Moralis: два вызова во время первичной загрузки кошелька - нативные ETH-переводы и все ERC-20 token transfers. С чем сравниваем: Nansen.io - берем как эталон, сравниваем наши рассчитанные метрики с тем, что показывает Nansen для тех же кошельков за тот же период. Проблема: наши цифры существенно отличаются от Nansen, и мы не до конца понимаем, по каким правилам часть действий кошелька должна классифицироваться для целей PnL. Необходимо исправить расчет Реализованной PnL, ROI и Win Rate, чтобы совпадали с Нансеном. В заявке напишите, пожалуйста: - опыт в схожих задачах - опыт с Nansen - опыт с Moralis - опыт с DeFiLlama - опыт со статьей по криптооперациям - приблизительную стоимость и сроки фикса
Сайт работает на фреймворке Next.js (на базе React). Необходимо выполнить все пункты по ТЗ. ТЗ прилагается в файле. Жду предложений.
Сайт для оценки: https://copy.eurobrands-shop.de/ Задача: исправить frontend-баги на уровне темы Magento 2 / Amasty theme: CSS/LESS/JS, mobile, RTL, minicart, language dropdown, layout shift/CLS. Формат работы: - без локального разворачивания Magento; - работа через DevTools + исходники темы; - правки в CSS/LESS/JS/template-файлах темы; - результат: diff / коммит / архив изменённых файлов; - деплой и сборка на нашей стороне; - работа через безопасную сделку; - NDA до передачи исходников/доступов. Что нужно проверить и оценить: 1. RTL / арабская версия: - телефон в шапке отображается некорректно; - смещения элементов в header, minicart, wishlist/account, product page; - отступы, direction, unicode-bidi, positioning. 2. Header: - language dropdown; - cart/wishlist; - hit-area иконок. 3. Minicart: - нестабильно открывается на некоторых страницах; - проверить Console / Network / Event Listeners / customer-data / z-index / overlay. 4. Mobile: - бейджи корзины/wishlist слишком большие; - блок Categories сжимается/обрезается; - mobile menu / Menu-Account. 5. Product page: - layout shift / CLS изображения; - Add to Cart / Quantity / BOX / PALLET в RTL. 6. Wishlist/account: - /wishlist/ - /mwishlist/ - вкладки, Back button, переполнение счётчиков. Проблемные URL: - https://copy.eurobrands-shop.de/alpro - https://copy.eurobrands-shop.de/producers - https://copy.eurobrands-shop.de/wishlist/ - https://copy.eurobrands-shop.de/mwishlist/ В отклике напишите: 1. Есть ли опыт с Magento 2 frontend? 2. Есть ли опыт RTL? 3. Сколько часов нужно на первый этап? 4. Какая стоимость? 5. Когда можете начать? 6. Какие доступы нужны? 7. Готовы ли работать через безопасную сделку и подписать NDA? Важно: нужен конкретный результат — исправления или техническое объяснение по каждому пункту: исправлено / не воспроизводится / не frontend-проблема.
Описание заказа: Ищем опытного frontend-разработчика/специалиста по OpenCart для оптимизации скорости загрузки сайта (категории и карточки товаров) под требования Google Core Web Vitals. О проекте: * CMS: OpenCart. * Специфика: Сайт работает в режиме каталога (корзины и оформления заказа нет). * Объем: 2900 позиций. * Серверная часть: Уже оптимизирована (работает на OpenLiteSpeed). * Стек: Работа ведется исключительно с кодом шаблона, модификаторами и фронтендом. Без работы с базой данных. Что нужно сделать (Техническое задание): 1. Отложенная загрузка скриптов (Delay JS): * Проблема: Сторонние скрипты аналитики (GTM, Google Tag) блокируют основной поток на мобильных устройствах примерно на 4.3 секунды. * Задача: Настроить отложенный запуск этих скриптов. Скрипты должны активироваться строго по первому действию пользователя (первый скролл, тап по экрану или движение мыши). * Важно: Сбор статистики, аналитика и работа рекламы должны сохраниться в полном объеме. 2. Исправление метрики CLS (Стабильность верстки): * Проблема: Страница «прыгает» и сдвигается во время загрузки картинок. * Задача: В файлах стилей или шаблона темы жестко прописать HTML-атрибуты width и height для всех изображений товаров в каталоге (листингах) и карточках товара. * Цель: Зарезервировать место под изображения в DOM-дереве до их фактической загрузки, чтобы исключить сдвиг контента. Проверить, чтобы адаптивность (CSS) не сломалась. 3. Оптимизация критического пути (LCP): * Задача: Прописать для основного (главного) изображения товара на первом экране тег fetchpriority="high". Это даст браузеру команду загружать главное фото товара в приоритетном порядке. Требования к исполнителю и условия приема: 1. Без лишних модулей: Работа выполняется чистым кодом/модификаторами, без установки дополнительных сторонних или платных плагинов оптимизации. 2. Безопасность и верстка: Вы несете полную ответственность за верстку. После внесения правок визуальное отображение сайта на мобильных и ПК, а также функционал (фильтры, переключение фото в галерее, меню) должны остаться без изменений. 3. Критерий сдачи работы (DoD): Предоставление скриншота и ссылки на живой тест отчета Google PageSpeed Insights (для мобильной версии). Показатель производительности должен быть не ниже 75 баллов, а метрика CLS — не более 0.1 (в зеленой зоне). Правки вносить строго через модификаторы (OCMOD) или копию темы, чтобы не затереть обновления ядра. В отзыве, пожалуйста, укажите: 1. Был ли опыт настройки Delay JS именно для GTM на OpenCart? 2. Срок выполнения задания. 3. Стоимость работы.