Або ви можете надати посилання на Google Таблицю з можливістю редагування, а також, якщо ви працюєте через Google Sheets API — доступ до нього.
Помочь с скриптом для Google Таблиц
Є база людей (Гугл таблиця), де записані дані користувачів. Треба щотижня розбивати користувачів на пари, щоб кожному була своя пара, при цьому щоб пари не повторювалися і щоб не підбирало минулу пару (є окремий стовпчик з минулими парами).
Матчинг відбувається спочатку по критеріях геолокації (ті в кого однакова), потім всі інші між собою по кількості спільних тегів. - це зараз вже реалізовано - треба перевірити, чи все вірно (воно працює, але ми не проганяли багато разів, може вам простіше буде переписати з 0)
Треба додати - матчинг тих, в кого спільних тегів немає - щоб їх рандомно між собою обʼєднювало
Результаты работы
Отзыв заказчика о сотрудничестве с Артемом К.
Помочь с скриптом для Google ТаблицАртем хорошо справился с заданием в Apps Script, всё функционирует как надо, охотно отвечал на вопросы и коммуницировал! Надеемся на продолжение сотрудничества в будущем! Рекомендуем исполнителя!
Отзыв фрилансера о сотрудничестве с Катериною Тимофеєнко
Помочь с скриптом для Google ТаблицСпасибо Екатерине за сотрудничество, вежливый и внимательный к деталям заказчик, проект интересный. Рекомендую.
-
Доброго. А вам потрібно все це в таблиці загнати?
-
Доброго дня, так, можете надати 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
Ищу опытного Full Stack разработчика для создания SaaS-сервиса для интернет-магазинов.Идея сервиса: Клиент загружает ссылку на свой товарный фид (XML или CSV). Сервис автоматически получает товары, берет их фотографии и создает новые рекламные изображения по готовым шаблонам: цена, скидка, логотип, акционные плашки и т.д. Также в сервисе должен быть простой… Javascript и Typescript, Веб-программирование ∙ 1 день 22 часа назад ∙ 82 ставки |
Разработка WebGL/Three.js сцены с генерацией и экспортом 3D (snapshot) из анимированного шейдераОписание объекта:Проект представляет собой дизайнерский стол, выполненный в форме реалистичного, глубокого водоворота (центральная воронка, которая плавно переходит из широкой горизонтальной столешницы в тонкую изящную ножку). Суть задачи:Требуется WebGL / Creative Coding… Javascript и Typescript, Веб-программирование ∙ 2 дня 19 часов назад ∙ 30 ставок |
Поддержка и развитие сайта клининговой компании
906 UAH
Ищу веб-разработчика / веб-мастера для долгосрочной поддержки и развития сайта клининговой компании. Сайт: https://donely.ca О проекте DoneLy Home Services — компания по предоставлению услуг уборки в Канаде, которая активно развивается и расширяет географию работы. Ищу… Javascript и Typescript, Веб-программирование ∙ 4 дня 21 час назад ∙ 64 ставки |
Разработка сайта по ТЗ на FramerНеобходимо сделать сайт по этим параметрам, что в ТЗ https://docs.google.com/document/d/1ODO2C9Krb4AaMiJz9wfbNzWlAyA2FwCCHL8r0biajUY/edit?usp=sharing Назовите реальный рейд на основе этого дизайна HTML и CSS верстка, Javascript и Typescript ∙ 5 дней 22 часа назад ∙ 29 ставок |
Разработка интерактивной карты Palworld для сайтаНеобходимо разработать интерактивную карту Palworld по примеру: https://palworld.gg/map Нам нужна не просто статическая картинка, а полноценная интерактивная карта, где пользователь может смотреть локации, включать / выключать категории объектов, искать нужные точки и… HTML и CSS верстка, Javascript и Typescript ∙ 7 дней 13 часов назад ∙ 36 ставок |