google_sheets | Technologies

Telegram-канал google_sheets - Google Таблицы

61109

Работа в Google Таблицах. Кейсы, решения и угар. админы: @namokonov @r_shagabutdinov @IT_sAdmin оглавление: goo.gl/HdS2qn заказ работы: teletype.in/@google_sheets/sheet_happens купить рекламу: https://telega.in/c/google_sheets РКН: clck.ru/3F3u9M

Subscribe to a channel

Google Таблицы

Парсим сразу много постов из
@google_sheets и @runforhealth

Друзья, покоряем fetchAll (одновременный запрос многих ссылок) и парсим пару сотен постов из нашего канала и прекрасного канала о беге от Рената Шагабутдинова

Таблица со скриптом

Читать полностью…

Google Таблицы

Дробим слово (скриптами или формулами)

Друзья, берем слово "инновации"

Вытащите из него три последние буквы, пишите в комментарии варианты.

Можно скрипты, можно формулы, новые варианты награждаются +7 к карме.

Читать полностью…

Google Таблицы

ВБ / WB, устанавливаем честный знак телеграм ботом

Друзья, недавно наши дорогие ягоды заставили к каждому отправленному товару приклеивать честный знак и регистрировать его в системе.

Для этого нужно сделать ряд действий в WB API, достать nmID, по нему достать qrCode и к нему уже привязать честный знак. Но это всё не важно — вся эта кухня работает под капотом, вам об этом думать не нужно.

У нас есть для этого готовый бот и вся обвязка для ВБ API, поэтому кого интересует честные знаки и их отправка – пишите мне, обсудим, сможем сделать для вас подобное решение.

@namokonov

Читать полностью…

Google Таблицы

Устали самостоятельно тыкаться в Excel или мучительно изучать SQL и Python?

Это объявление для всех начинающих аналитиков и тех, кто пока смотрит в сторону метрик, цифр и анализа.

📌 2-6 июня пройдет бесплатный интенсив «Введение в аналитику данных» от школы Changellenge >> Education.

Там всё, что нужно, чтобы разобраться с азами в работе с данными:
🔹 Базовый функционал SQL, Excel и Python,
🔹 Практика на реальных базах данных,
🔹 3 практических кейса, подобные тем, что аналитики решают ежедневно в работе,
🔹 Работа с 3 экспертами-практиками из Wildberries, VK и банка Точка!

5 дней в специальном телеграм-канале вы будете смотреть видео от экспертов и получать задания. И всё это время рядом будет куратор, который подскажет, если возникнуть вопросы.

✅ Можно получить сертификат об обучении.
✅ Каждый участник получает набор бонусов, среди которых — грант до 60 000 рублей на курсы по аналитике.

Бонусы и программа интенсива указаны на сайте.

📌 Переходите, изучайте, регистрируйтесь до 2 июня: https://u.to/r4FHIg

Реклама. ООО «Высшая школа аналитики и стратегии». ИНН 7716917009. erid: 2VtzqvTodyX

Читать полностью…

Google Таблицы

Комиссии ВБ

Друзья, позвольте замолвить за комиссии пару слов. Портал ВБ недавно поднял комиссии на товары для продавцов и мы для вас написали простой скрипт, который эти комиссии загружает прямо в Таблицу.

Метод официального API: https://dev.wildberries.ru/openapi/wb-tariffs#tag/Komissii/paths/~1api~1v1~1tariffs~1commission/get

Чтобы получить токен:


1) Войдите на https://seller.wildberries.ru
2) В левом меню выберите: Настройки → Доступ к API
3) На вкладке "Доступ к API" найдите кнопку «Создать новый ключ».
4) Вставьте ключ в код в аргумент token вместо 1


Скрипт с комментариями:

const token = '1';

function paste() {
const ss = SpreadsheetApp.getActive(); // Получаем активную Google-таблицу
const sh = ss.getSheetByName('Комиссии'); // Получаем лист с названием "Комиссии"
const arr = commissions(); // Вызываем функцию, получающую данные по комиссиям
sh.clearContents(); // Очищаем содержимое листа перед вставкой новых данных
sh.getRange(1, 1, arr.length, arr[0].length) // Определяем диапазон, соответствующий размеру массива
.setValues(arr); // Вставляем данные в указанный диапазон
};

function commissions() {
const url = 'https://common-api.wildberries.ru/api/v1/tariffs/commission'; // URL API для получения комиссий Wildberries

const options = {
method: 'get', // Метод запроса — GET
headers: {
'Authorization': token // Авторизационный заголовок с токеном
},
muteHttpExceptions: true // Не выбрасывать исключения при ошибках HTTP (например, 404)
};

const response = UrlFetchApp.fetch(url, options); // Отправляем HTTP-запрос и сохраняем ответ как строку
let json = JSON.parse(response.getContentText()); // Преобразуем строку в JSON
console.log(json); // Выводим полученный JSON в консоль

json = json.report; // Извлекаем массив объектов из ключа "report"
const headers = Object.keys(json[0]); // Получаем список названий столбцов (ключи первого объекта)
console.log(headers); // Выводим полученный список в консоль

const arr = json.map(j => headers.map(h => j[h])); // Преобразуем массив объектов в массив массивов значений
return [headers, ...arr]; // Возвращаем итоговый массив: первая строка — заголовки, далее строки с данными
};


🏄 Заказ работы у нас

PS В комментариях - готовая Таблица с комиссиями и скриптом, можете просто скопировать её :)

Читать полностью…

Google Таблицы

Краснодар

Завершился чемпионат России по футболу и произошло хорошее футбольное чудо – чемпионом РПЛ в этом сезоне стала команда Краснодар.

В коротком видео мы покажем, как с помощью одной Google Таблицы и простого скрипта можно выгрузить итоговую турнирную таблицу РПЛ прямо из веб-сайта.

Таблица со скриптом

🚀 Наш курс
📗 Канал и Чат
🏄 Заказ работы у нас

Читать полностью…

Google Таблицы

📚 План нашего курса по Google Apps Script (прошел только один урок, набор продолжается)

1. Сначала база — учимся думать как программист и использовать возможности языка:

🧱 Первый урок:
— Переменные
— Типы данных
— Массивы и объекты
— Функции
— Среда разработки

🔁 Второй урок:
— Условия: if, if...else
— Циклы: for, for...of
— Метод .map()
— Изменяем массивы и объекты через циклы

🧮 Третий урок:
— Методы .filter() и .reduce()
— Примеры реальных задач
— Пишем скрипт, который фильтрует и вставляет данные в Google Таблицу

📊 2. Работа с Google Таблицей через Apps Script
— Чтение и запись данных из разных Таблиц
— Форматирование ячеек, строк и столбцов (цвета, шрифты, выравнивание)
— Триггеры (onEdit) — запуск кода при изменении таблицы
— Запуск скриптов по расписанию (таймеры, time-driven triggers)

📁 3. Работа с Google Диском
— Создание в Таблице реестра файлов
— Управление папками и правами

📆 4. Работа с Google Календарём
— Выгрузка событий

📬 5. Работа с Gmail (Google Почтой)
— Выгрузка писем
— Отправка писем из скрипта

🌐 6. Работа с внешними API из скриптов
— Wildberries, остатки, заказы
— OZON, отчёты, карточки товаров
— ChatGPT API, подключаем прямо к Таблице

🧩 7. Реальные задачи от заказчиков (практика)
— Создание документов из таблиц
— Преобразование Таблиц и Документов в PDF и автоматическая отправка на почту
— Импорт Excel/XLSX файлов (остатки, продажи), сбор на один лист и получение сводной

💸 Стоимость курса — 100 000 ₽
📌 Бронь, оплата , вопросы — пишите @namokonov или @elizaveta_sh_komarova

Читать полностью…

Google Таблицы

🧔‍♂️ Для нашего древнейшего клиента — барбера Алексея из Казани (и всех, кто в теме):

В Google Таблице — два скрипта:
1️⃣ Вытаскиваем из Ozon все товары 🛒
2️⃣ Достаем список всех складов 📦

Работают чётко, как ножницы в руках опытного мастера 💇‍♂️

Код с комментами отдельно


function w() {
// URL для запроса списка складов с Ozon API
const url = 'https://api-seller.ozon.ru/v1/warehouse/list';

// Настройки для POST-запроса
let params = {
method: 'post', // Метод запроса
contentType: 'application/json', // Тип содержимого
'headers': {
'client-id': Client_Id, // Идентификатор клиента (ваш Ozon Client ID)
'Api-Key': Api_Key // Ключ API (ваш Ozon API Key)
}
};

// Выполняем запрос к API и получаем объект HTTPResponse
let r = UrlFetchApp.fetch(url, params);

// Преобразуем ответ из строки JSON в объект JavaScript
r = JSON.parse(r);

// Выводим результат в консоль (для отладки в Apps Script IDE)
console.log(r);

// Получаем заголовки из первого объекта результата (ключи объекта)
let headers = Object.keys(r.result[0]);
console.log(headers); // Выводим заголовки в консоль (для отладки)

// Преобразуем массив объектов в двумерный массив по заголовкам
let arr = r.result.map(row => headers.map(h => row[h]));

// Добавляем строку заголовков в начало массива
arr = [headers, ...arr];

// Логируем итоговый массив (для отладки)
Logger.log(arr);

// Получаем активную таблицу Google Sheets
const ss = SpreadsheetApp.getActive();

// Получаем лист с именем 'w'
const sh = ss.getSheetByName('w');

// Очищаем всё содержимое листа перед вставкой новых данных
sh.clearContents();

// Получаем диапазон по размеру массива и вставляем данные
sh.getRange(1, 1, arr.length, arr[0].length).setValues(arr);
};


Информацию по курсу (набираем еще всю следущую неделю)
👉 t.me/google_sheets/1685

📌 Бронь, оплата , вопросы — пишите @namokonov или @elizaveta_sh_komarova

Читать полностью…

Google Таблицы

Друзья, подскажите!
Кто-нибудь записывает вебинары с автоматическими субтитрами и полной расшифровкой речи (желательно с таймкодами)?

Мы перепробовали разные инструменты, но пока не нашли идеальное решение.
Будем очень благодарны за ваши советы и опыт — делитесь в комментариях! 🙏

Читать полностью…

Google Таблицы

Простая задача для подписчков, проперти

Читать полностью…

Google Таблицы

Друзья, пару мест на курсе осталось и стартуем

На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:

✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул

Только практические кейсы — никаких «абстрактных задачек».

🚀 Про курс — коротко:

1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*

❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!

Читать полностью…

Google Таблицы

✅ Сегодня всем подписчикам канала мы открыли бесплатный доступ к курсу "Инструменты Excel для финансиста" в Высшей школе финансового директора.

Изучив курс, вы сможете:  
🔶Создавать в Excel динамические графики и гистограммы
🔶Настроить дашборд с метриками под нужды вашей компании
🔶Создать панель оперативного мониторинга и отслеживать показатели
🔶Построить интерактивный график для анализа затрат в Excel

+ В подарок книга по работе в Excel, которая прокачает ваши навыки

Скачивайте дашборды, инструкции, матрицы ключевых метрик, шаблоны с диаграммами и применяйте их в своей работе!

Заказать бесплатный доступ к курсу на 3 дня>>>

#реклама
О рекламодателе

Читать полностью…

Google Таблицы

Что вы конкретно получите на нашем курсе по разработке на Таблицах, пример

Показываю в видео два примера обращения к API OZON
— получает токен
— получаем по этому токену рекламные кАмпании, берем из них отдельные элементы и вставляем всё в Таблицу

Таблица с кодом

На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:

✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул

Только практические кейсы — никаких «абстрактных задачек».

🚀 Про курс — коротко:

1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*

❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!

Читать полностью…

Google Таблицы

Задачка для подписчиков

Друзья, привет! Всех с началом новой недели.

У нас для вас есть небольшая задачка - сделайте классическую, таблицу умножения от 1 * 1 до 9 * 9, реализовать можно как формулами, так и скриптами.

То, что получится - пишите в комментарии или в наш чат @google_spreadsheets_chat

🚀 В следующем посте покажу свой вариант с помощью скриптов.

Читать полностью…

Google Таблицы

Тренинг "Табличные формулы для продолжающих"

Друзья, остается 5 мест на мой оффлайн-тренинг с книгой "Магия таблиц" в подарок

Напоминаю: пройдет обучение в Москве, 24-25 мая, два полных дня.

В комплекте:
- все файлы с примерами — в исходном состоянии (для практики на уроках) и в готовом состоянии
- кофе-брейки, ноутбуки с Microsoft Office 2021 в учебном классе
- слайды с материалами по всем темам
- много практики и общения

Программа на приложенных картинках и на странице тренинга:
https://shagabutdinov.ru/formulas-offline
Там же можно оставить заявку. Или напишите мне: renat@shagabutdinov.ru

Какой требуется уровень? Начинающий и продолжающий, но не нулевой (со второго по четвертый — из пяти — уровень Гильдии табличных магов, иначе говоря). Минимальный опыт работы с формулами нужен (вы трогали клавишу F4 и использовали что-то вроде СУММ / SUM или ВПР / VLOOKUP)

Читать полностью…

Google Таблицы

Формат личного обучения

Друзья, когда мы набирали последнюю группу, мне в личку пришло несколько вопросов вроде:

"А можно не в группе, а индивидуально, только с вами?"


Я немного подумал — и да, можно!

Более того, это даже удобнее:
— мы сразу стартуем с вашего уровня
— под ваши задачи
— смогу подстроиться под ваш график, заниматься утром или вечером, как вам комфортно.

По стоимости и условиям @namokonov, всё обсудим.

Читать полностью…

Google Таблицы

"Заказчики" или история про Андрея Галетку

Есть особая категория людей, которые неделями и даже месяцами обсуждают потенциальный заказ: задают вопросы, уточняют детали, обещают "вот-вот прислать ТЗ" — и исчезают.

Не отказываются, но и не начинают. Это не клиенты, а вечные «на грани».

Работа с такими — бесконечное ожидание без результата.

На скриншоте — малая часть переписки с неким Андреем Галетко.

Таких за нашу практику было немало, и мы уже хорошо научились отличать тех, кому действительно нужно решение, от тех, кто просто тратит наше время.

Зачем они это делают — остаётся загадкой, но мы не будем её разгадывать. У нас и без того хватает настоящих, интересных задач.

🚀 Если вам нужно реальное вашей решение — пишите @namokonov.

PS В комментариях переписка с ним аж с 2020 года

Читать полностью…

Google Таблицы

СУММЕСЛИМН по выбранному товару (поиск строки с помощью ПОИСКПОЗ)

На прошедшем в выходные тренинге по формулам обсуждали вот такую задачку: нужно просуммировать данные за выбранный год и только по штукам или деньгам. А таблица устроена так (плохо, но это жизнь), что в ней есть столбцы со штуками и деньгами попарно. Она не плоская.

Как быть?
Использовать СУММЕСЛИМН / SUMIFS, благо в условиях функции можно использовать символ подстановки (* = любой текст). И благо диапазоны суммирования и условия могут быть горизонтальными, а не только вертикальными.

В нашем случае переменная часть нужных заголовков — это месяцы. Они меняются. А нужный показатель (штуки или деньги) — нет. Соответственно, если нам нужны все продажи в деньгах за 2024 год:

=СУММЕСЛИМН(2:2;1:1;"Деньги*2024")

Все продажи в штуках за все время:
=СУММЕСЛИМН(2:2;1:1;"Штуки*")


Но вторая строка здесь - это конкретный товар. И коллеги на тренинге задали правильный вопрос - а как суммировать по выбранному (в выпадающем списке) товару?
Решили так:
Находим строку с помощью ПОИСКПОЗ / MATCH с выбранным товаром:
ПОИСКПОЗ(нужный товар;список товаров;0)
ПОИСКПОЗ(A11;A1:A7;0)


Делаем ссылку на строку с этим номером - то есть добавляем двоеточие и еще раз этот же номер
ПОИСКПОЗ(A11;A1:A7;0) & ":" & ПОИСКПОЗ(A11;A1:A7;0)


Такая конструкция вернет 3:3, если выбранный товар в третьей строке.
Но это текст. Превратим его в активную ссылку с помощью ДВССЫЛ / INDIRECT и засунем в СУММЕСЛИМН:
=СУММЕСЛИМН(ДВССЫЛ(ПОИСКПОЗ(A11;A1:A7;0) & ":" & ПОИСКПОЗ(A11;A1:A7;0));1:1;B10)


В новой версии можно с помощью LET один раз найти номер строки, а не вычислять его дважды:
=LET(строка;ПОИСКПОЗX(A11;A1:A7);
СУММЕСЛИМН(ДВССЫЛ(строка&":"&строка); 1:1 ;B10))

(но в новых формулах столько функций, что можно и как-нибудь иначе вообще это решить ;) )

Читать полностью…

Google Таблицы

Глубокие интеграции с озон / вб, к примеру - автозаказа товаров

Друзья, был у меня один из клиентов по вб (звали его Иван)

Мы для него сделали решение для автозаказа новых позиций (то есть, мы смотрели что было продано, сколько у нас оставалсь каждый день, хитро копили эти остатки и далее выводили ему сколько и чего ему нужно заказывать на следующей неделе

Таких решений мы сделали много и по заказам и по рекламе, поэтому помните, Таблицы - это не просто возможность загрузить конкретный отчет из ВБ, скажем, коммиссии, это возможность полностью сделать свой бизнес автоматическим и заказать столько товаров сколько их нужно заказать.

Пишите @namokonov, все расскажу

Читать полностью…

Google Таблицы

LAMBDA в квадрате: получаем одной формулой сводку по опросу с любым количеством столбцов.

Дано: есть много опросов из гуглоформ — нужно иметь возможность быстро посмотреть статистику ответов по каждому столбцу во многих таблицах, в идеале просто вставив формулу. Причем формулу хочется вставлять в любую ячейку, не меняя никаких ссылок.

Решение:
Начинаем с того, что получаем диапазон с помощью СМЕЩ / OFFSET: отталкиваемся от ячейки B2, считаем с помощью СЧЁТЗ / COUNTA, сколько в первой строке заголовков и в первом столбце значений, чтобы понять ширину и высоту диапазона.

Обращаемся к каждому столбцу диапазона через BYCOL. Столбец у нас будет скрываться под переменной col. Что мы делаем с каждым столбцом?
Мы производим манипуляции с каждым уникальным значением (ответом) из этого столбца — UNIQUE(col), отправляя это в функцию MAP. Каждое значение из столбца будет у нас в переменной ans.

Что мы с ней делаем? Возвращаем ее как есть, добавляем разделитель по вкусу и добавляем самое главное — сколько раз встречается этот ответ (СЧЁТЕСЛИ / COUNTIF)


= BYCOL (СМЕЩ($B$2;0;0; СЧЁТЗ($A$2:$A); СЧЁТЗ($1:$1)-1);
LAMBDA(col; MAP(UNIQUE(col); LAMBDA(ans; ans & ваш_разделитель & СЧЁТЕСЛИ(col;ans)))))


= BYCOL (OFFSET($B$2;0;0; COUNTA($A$2:$A); COUNTA($1:$1)-1);
LAMBDA(col; MAP(UNIQUE(col); LAMBDA(ans; ans & ваш_разделитель & COUNTIF(col;ans)))))


Таблица с примером

Читать полностью…

Google Таблицы

Друзья, мы постепенно завершаем набор на курс — завтра уже второй урок 📚

Ниже прикрепляю его план.

Если всё же решите присоединиться — это можно сделать сегодня или завтра.

Позже, увы, не получится: важно, чтобы все шли в одном темпе с группой 🚶‍♂️🚶‍♀️

План второго урока, друзья:


1. Вспоминаем, что было на первом уроке:
 — переменные и их типы,
 — присвоение значений,
 — массивы и объекты.

2. Разбираем конструкции if и if...else:
 — как проверять условия и выполнять код, если условие выполняется или нет.

3. Изучаем циклы for и for...of:
 — учимся с их помощью изменять элементы исходного массива.

4. Познакомимся с методом .map():
 — создаём новый массив, основываясь на старом.

5. Практика с циклами:
 — находим номер последней заполненной строки,
 — считаем сумму всех значений в массиве,
 — собираем строку из элементов, подходящих под условие (if).


💸 Стоимость курса — 100 000 ₽ (возможны варианты рассрочки)
📌 Бронь, оплата , вопросы — пишите @namokonov или @elizaveta_sh_komarova

Читать полностью…

Google Таблицы

Ну что, целых четыре скрипта про группировки от подписчицы админа нашего чата Елизаветы

Не знаю как у вас, но у меня на работе обожают таблицы со структурой 🙈 (это когда строки можно свернуть, развернуть по нажатию кнопки ➕/➖).

Эти отчеты я получаю автоматически из 1С уже в нужной форме.

Но… 🦦 иногда разработчики не поспевают за всеми пожеланиями конечных пользователей отчета и тогда возникает необходимость из строк (подложка) собрать эту структуру.

Именно для себя я и написала этот скрипт, который может быть полезен и кому-нибудь из вас.


1) Для работы этого скрипта данные должны быть организованны определённым образом - отсортированы по первому и второму столбцу.

2) Скрипт группирует строки по уровню 1, в примере это
покупатель. А затем по уровню 2 – место покупки.


Таблица со скриптами (создаем группировку, убираем, сворачиваем и разворачиваем)

📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас

Читать полностью…

Google Таблицы

Автоматическая группировка для строк — всё по взаимному согласию и по условиям. 😉

У нас есть скрипт, который автоматически группирует строки в Google Таблицах по заданным условиям. Работает стабильно, руками ничего складывать не нужно — всё само.

Делиться или оставить в столе до лучших времён?
Напишите в комментариях, пригодится вам такой помощник — поймём, стоит ли выкладывать. 👇🙂

Читать полностью…

Google Таблицы

А теперь, друзья, ответ на вопрос от телезрителя из солнечной Турции!

Не
Мехмет интересуется:
«Как узнать, сколько памяти занимают мои проперти в Google Apps Script в проекте? Не пора ли их очищать?

Начнем с того, что общий доступный объем (неудаляемый) - 500 кб
Объем пары (ключ, значение) - 9 кб
https://developers.google.com/apps-script/guides/services/quotas#current_limitations


Скрипт, которым вы можете проверить занятый объем


function propertyUsedSize() {
const properties = PropertiesService.getScriptProperties().getProperties();
let totalBytes = 0;

for (let key in properties) {
totalBytes += getUTF8Length(key);
totalBytes += getUTF8Length(properties[key]);
}

const kilobytes = (totalBytes / 1024).toFixed(2);
Logger.log('~ объём пропертей: ' + kilobytes + ' КБ'); //~ объём пропертей: 17.65 КБ
}

function getUTF8Length(str) {
let utf8length = 0;
for (let i = 0; i < str.length; i++) {
const charCode = str.charCodeAt(i);
if (charCode < 0x80) utf8length += 1;
else if (charCode < 0x800) utf8length += 2;
else if (charCode < 0x10000) utf8length += 3;
else utf8length += 4;
}
return utf8length;
}


PS Минус GAS, что вторую функцию можно было бы заменить на простой TextEncoder — это встроенный класс в JavaScript (в браузерах и в некоторых средах выполнения), который превращает строку в массив байтов. Основное применение — когда тебе нужно понять, сколько реально весит строка в байтах, а не просто её длину в символах. Но нет TextEncoder в GAS, поэтому пришлось писать руками.

📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас

Читать полностью…

Google Таблицы

Аааа! Наш курс (базовая группа стартует уже завтра)

Поэтому вам вот такой интересный и простой onEdit с хранением в скрипт проперти и со структурой объект всего - объект


function dataToProp() {
const pr = PropertiesService.getScriptProperties();
const ss = SpreadsheetApp.getActive();
const s0 = ss.getSheetByName('Справочник')
.getDataRange()
.getValues()
.map(f => [f[0], f[1]])

const s = s0.slice(1);

let o = {}
l1 = s.length;
l2 = s[0].length;

for (x = 0; x < l2; x++) {
for (y = 0; y < l1; y++) {
o[s0[0][x]] = s.map((f, i) => f[x]).filter(f => f);
};
};

console.log(o);
o = JSON.stringify(o);
pr.setProperty('key', o);
};

function onEdit(e) {
let range = e.range; //ячейка
let sheet = e.source.getActiveSheet(); //лист

if (sheet.getName() == 'Рабочий') {
let row = range.getRow();
let key = e.value; //что ввели в ячейку
if (!key) return;
let column = range.getColumn();
if (row >= 1 && column == 1) {

const pr = PropertiesService.getScriptProperties();
let listdata = pr.getProperty('key')
listdata = JSON.parse(listdata);
let list = listdata[key];

let rule = SpreadsheetApp.newDataValidation().requireValueInList(list).build();
range.offset(0, 1).setDataValidation(rule);
}
}
};


Мало понимаете в скриптах? Базе мы вас научим и не только базе, а и еще действительно пользе :)

🚀 Про наш курс, старт уже на следующей неделе t.me/google_sheets/1685

Читать полностью…

Google Таблицы

Загружаем товары с Ozon через API
*или то, чем мы с вами и будем весело заниматься на курсе 🙂 *

Сегодня — научимся тянуть список всех товаров нашего купца (или, как говорят на Ozon, селлера) через API прямо в Google Таблицы.

Я специально разобрал код в видео медленно, пошагово и с объяснениями, также сам код прокомментировал внизу


function list() {
const url = 'https://api-seller.ozon.ru/v3/product/list';

let params = {
method: 'post',
muteHttpExceptions: true,
contentType: 'application/json;',
'headers': {
'client-id': Client_Id,
'Api-Key': Api_Key
}
};

var arr = [];

for (var x = 0; ; x++) {

let payload = {
"filter": {
"visibility": "ALL"
},
"last_id": !x ? '' : last_id,
"limit": 1000
};


params['payload'] = JSON.stringify(payload);

console.log('x:', x);
console.log(params);

var r = UrlFetchApp.fetch(url, params); //строка
r = JSON.parse(r); //JSON
var last_id = r.result.last_id
r = r.result.items;
if (!r.length) { break; };

var headers = Object.keys(r[0]);
r = r.map(rr => headers.map(h => h == 'quants' ? rr[h].join(',') : rr[h]));

arr = [...arr, ...r];
};

arr = [headers, ...arr];
Logger.log(arr);

const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('list')
sh.clearContents();
sh.getRange(1, 1, arr.length, arr[0].length)
.setValues(arr);
};


🚀 Про наш курс, старт уже на следующей неделе t.me/google_sheets/1685

Читать полностью…

Google Таблицы

✅ Таблица умножения — решена!

Друзья, огромное спасибо за вашу невероятную активность в комментариях!

Честно, мы не ожидали, что будет настолько много вариантов формул — и таких разных, и таких находчивых.

Каждому, кто попробовал себя в этом задании, мы начислили +5 кармы в нашем чате — заслуженно 💎

Особенно радует, что даже простая задача может вдохновить на десятки оригинальных решений.

Одно из многих элегантных решений:


= ARRAYFORMULA(SEQUENCE(10) * SEQUENCE(1; 10))


Просто, понятно и мгновенно работает. 🧠⚡

Ну а напоследок — скрипт или пользовательская функция:



function pifagor(n) {
return Array.from({ length: n }, (_, x) => // создаём внешний массив (строки), длины n
Array.from({ length: n }, (_, y) => // для каждой строки создаём массив (столбцы), длины n
(x + 1) * (y + 1) // вычисляем значение ячейки: (номер строки + 1) * (номер столбца + 1)
)
);
}


Автоматизация — это не страшно.
Это весело, эффективно и реально экономит часы жизни. Наш курс

Читать полностью…

Google Таблицы

Хотите сменить профессию? Станьте бизнес-аналитиком за 7 месяцев

🔹 Используйте свою экономическую базу — превратите знания в востребованные навыки
🔹Работайте с данными и стратегиями — помогайте бизнесу принимать выгодные решения
🔹Освойте все необходимые инструменты для старта в профессии — SQL, Tableau, моделирование в нотациях IDEF0, BPMN 2.0, EPC

Уже через полгода вы сможете:

1. Анализировать бизнес-процессы и искать пути оптимизации.
2. Решать реальные кейсы от работодателей и собрать портфолио.
3. Претендовать на позицию младшего бизнес-аналитика и расти в карьере.

Нетология поможет с получением работы. Во время учёбы вы получите опыт работы с заказчиками и разберёте тестовые задания из реальных вакансий с поддержкой экспертов в бизнес-аналитике. Специалисты по трудоустройству помогут найти компании для стажировки, составить резюме, портфолио и подготовиться к собеседованию.

Присоединяйтесь к курсу «Бизнес-аналитик» от Нетологии со скидкой 45% по промокоду ANALYTIC45.

Подробнее о курсе
Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5xNA9u2

Читать полностью…

Google Таблицы

Пробуем бесплатного бота про слова

Привет, чем заняться в воскресенье? Можно шкаф передвинуть, а можно попробовать бесплатного бота от Александра Брусенцова, моего экс-коллеги по компании Яндекс.


Задача игры — написать на заданную тему 10 максимально банальных слов, цель — максимально совпасть с остальными игроками.


Заходите поиграть!
@banalnosti_game_bot

PS Приятно осозновать, что мои ученики из курса по созданию ботов ❤️ могут делать ботов примерно такого же уровня.

🚀 Сейчас идёт набор на второй поток (темы шире, не только боты), завтра - анонс

По любым вопросам - ваш Евгений, @namokonov

Читать полностью…

Google Таблицы

onEdit, возвращающий email автора - разгадка

Друзья, спасибо за варианты.

Решение такое - делаем отдельные защищенные диапазоны для каждого возможного автора таблицы и в названии диапазона пишем его email.

Далее в onEdit() просто перебираем эти диапазоны, если человек может редактировать диапазон - то берем название диапазона (в которое мы написали email автора) и вставляем как примечаение в ячейку

Решение неоптимальное, но мы все равно им с вами делимся, чтобы вы знали, как скриптами и смекалкой иногда можно увеличить возможности, доступные из коробки.


function onEdit(e) {
const ss = e.source;
if (ss.getSheetName() == '()') {
return;
};

const email = check(ss);
e.range.setNote(email);
};


function check(ss) {
const sheet = ss.getSheetByName('()');
const pr = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);

for (let i = 0; i < pr.length; i++) {
const p = pr[i];
if (p.canEdit()) {
Logger.log(p.getDescription());
return p.getDescription();
};
};
};



📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас

Читать полностью…
Subscribe to a channel