Або ви можете надати посилання на Google Таблицю з можливістю редагування, а також, якщо ви працюєте через Google Sheets API — доступ до нього.
Допомогти з скриптом для гугл таблиць
1600 UAHЄ база людей (Гугл таблиця), де записані дані користувачів. Треба щотижня розбивати користувачів на пари, щоб кожному була своя пара, при цьому щоб пари не повторювалися і щоб не підбирало минулу пару (є окремий стовпчик з минулими парами).
Матчинг відбувається спочатку по критеріям геолокації (ті в кого однакова), потім всі інші між собою по кількості спільних тегів. - це зараз вже реалізовано - треба перевірити, чи все вірно (воно працює, але ми не проганяли багато разів, може вам простіше буде переписати з 0)
Треба додати - матчинг тих, в кого спільних тегів немає - щоб їх рандомно між собою обʼєднювало
Результати роботи
Відгук замовника про співпрацю з Артемом К.
Допомогти з скриптом для гугл таблицьАртем добре впорався з завданням в Apps Script, все функціонує як треба, охоче відповідав на питання та комунікував! Сподіваємося на продовження співпраці у майбутньому! Рекомендуємо виконавця!
Відгук фрилансера про співпрацю з Катериною Тимофеєнко
Допомогти з скриптом для гугл таблицьДякую Катерині за співпрацю, чемний та уважний до деталей замовник, проект цікавий. Рекомендую.
-
Доброго. А вам потрібно все це в таблиці загнати?
-
Доброго дня, так, можете надати csv або xls файли для роботи. А я потім експортую їх назад
-
Давайте краще в тг спишемось ? Бо тут можу через роботу не бачити відповідь. @Mr_Ambal
-
Спросить ChatGPT
-
🎯 Система матчинга пользователей - Техническое описание
💻 Технологический стек:
Основной язык: JavaScript (ES6+)
Платформа: Google Apps Script
База данных: Google Sheets
Среда выполнения: Google Cloud Platform🏗️ Архитектура решения:
Серверная часть:
- Google Apps Script - облачная JavaScript среда
- Класс UserMatcher - основная логика алгоритма
- Event-driven архитектура - функции вызываются по событиям
Хранение данных:
- Google Sheets как NoSQL база данных
- Структурированные колонки с типизированными данными
- Автоматическое обновление истории и результатов
Пользовательский интерфейс:
- Кастомное меню в Google Sheets
- Модальные окна для отображения результатов
- Автоматические уведомления о статусе операций
🔧 Ключевые технические решения:
1. Объектно-ориентированное программирование:
class UserMatcher {
constructor(users) {
this.users = users;
this.pairs = [];
this.unpaired = [];
}
}
-
2. Функциональное программирование:
- Методы высшего порядка (filter, map, sort)
- Чистые функции без побочных эффектов
- Иммутабельность данных
3. Алгоритмические решения:
- Жадный алгоритм для геолокации
- Алгоритм максимального веса для общих тегов
- Алгоритм Фишера-Йетса для рандомизации
📊 Структура данных:
Входные данные (Google Sheets):
{
id: Number, // Уникальный идентификатор
name: String, // Имя пользователя
location: String, // Геолокация
tags: Array<String>, // Массив интересов
pastPairs: Array<Number> // История пар
} Выходные данные:
{
pairs: Array<[User, User]>, // Массив пар
unpaired: Array<User> // Непарные пользователи
}
🎲 Алгоритм матчинга:
Сложность: O(n²) для этапа тегов, O(n log n) общая
Память: O(n) дополнительной памятиЭтапы алгоритма:
- Группировка по геолокации - O(n)
- Сортировка по потенциальным парам - O(n log n)
- Матчинг по общим тегам - O(n²)
- Случайное распределение - O(n)
⚙️ Google Apps Script интеграция:
Триггеры и события:
javascript
function onOpen() { // Создание пользовательского меню SpreadsheetApp.getUi().createMenu() }Работа с Google Sheets API:
javascript
const sheet = SpreadsheetApp.getActiveSheet(); const data = sheet.getRange().getValues(); sheet.getRange().setValues(results);Обработка ошибок:
javascript
try { // Основная логика } catch (error) { Logger.log('Ошибка: ' + error.toString()); SpreadsheetApp.getUi().alert('Ошибка', error.message); }🚀 Особенности реализации:
Оптимизации:
- Кэширование результатов в памяти
- Минимизация обращений к Google Sheets API
- Пакетная обработка данных
Масштабируемость:
- Поддержка до 1000+ пользователей
- Линейное время выполнения
- Эффективное использование памяти
Надежность:
- Валидация входных данных
- Обработка edge cases (нечетное количество)
- Логирование всех операций
📈 Метрики производительности:
- Время выполнения: ~2-5 секунд для 100 пользователей
- Память: ~1MB для обработки данных
- API вызовы: Минимизированы через batch operations
🔄 CI/CD и деплой:
Среда разработки: Google Apps Script Editor
Версионирование: Git + Google Apps Script встроенный контроль
Деплой: Автоматический через Google Cloud Platform
Мониторинг: Google Apps Script Dashboard + Custom логирование https://docs.google.com/spreadsheets/d/1wFdR9t0BKfSGj418PrFMu8SmSc1GD5oiYMxYByKTHLA/edit?usp=sharing -
Я предлагаю тщится в Привате. У меня есть предложение как это все реализовать. Но это лучше обсуждать не тут.
-
Актуальні фриланс-проєкти в категорії Javascript та Typescript
Розробка WebGL/Three.js сцени з генерацією та експортом 3D (снапшот) з анімованого шейдераОпис об'єкта:Проект являє собою дизайнерський стіл, виконаний у формі реалістичного, глибокого водовороту (центральна воронка, яка плавно переходить з широкої горизонтальної стільниці в тонку витончену ніжку). Суть задачі:Потрібен WebGL / Creative Coding розробник для створення… Javascript та Typescript, Веб-програмування ∙ 10 годин 46 хвилин тому ∙ 18 ставок |
Підтримка та розвиток сайту клінінгової компанії
906 UAH
Шукаю веб-розробника / вебмайстра для довгострокової підтримки та розвитку сайту клінінгової компанії. Сайт: https://donely.ca Про проєкт DoneLy Home Services — компанія з надання послуг прибирання в Канаді, яка активно розвивається та розширює географію роботи. Шукаю… Javascript та Typescript, Веб-програмування ∙ 2 дні 12 годин тому ∙ 59 ставок |
Розробка сайту по ТЗ на FramerПотрібно зробити сайт по цим параметрам що в тз https://docs.google.com/document/d/1ODO2C9Krb4AaMiJz9wfbNzWlAyA2FwCCHL8r0biajUY/edit?usp=sharing Називайте реальний рейт на основі цього дизайну HTML та CSS верстання, Javascript та Typescript ∙ 3 дні 13 годин тому ∙ 27 ставок |
Розробка інтерактивної карти Palworld для сайтуПотрібно розробити інтерактивну карту Palworld за прикладом: https://palworld.gg/map Нам потрібна не просто статична картинка, а повноцінна інтерактивна карта, де користувач може дивитися локації, вмикати / вимикати категорії об’єктів, шукати потрібні точки та взаємодіяти з… HTML та CSS верстання, Javascript та Typescript ∙ 5 днів 4 години тому ∙ 35 ставок |
Розробка платформи AM Mobility (автосервіс, парковка, страхування, оренда автомобілів)
257 282 UAH
Шукаємо команду або досвідченого Full Stack розробника для створення MVP платформи AM Mobility. AM Mobility — це єдина цифрова екосистема для автомобілістів, що об'єднує в одному додатку та веб-платформі: парковку; автосервіс; шиномонтаж; автомийку; оренду автомобілів;… Javascript та Typescript, Веб-програмування ∙ 10 днів 10 годин тому ∙ 119 ставок |