Google Таблицы
64.1K subscribers
508 photos
181 videos
8 files
893 links
С 2017 года пишем про Google Таблицы и Google Apps Script — с юмором, реальными кейсами и эффективными решениями.

Обучение и заказ услуг: @namokonov 🍒
Реклама: @IT_sAdmin

Оглавление: goo.gl/HdS2qn

РКН: clck.ru/3F3u9M
Download Telegram
Google Таблицы
Автоматическая группировка для строк — всё по взаимному согласию и по условиям. 😉 У нас есть скрипт, который автоматически группирует строки в Google Таблицах по заданным условиям. Работает стабильно, руками ничего складывать не нужно — всё само. Делиться…
Media is too big
VIEW IN TELEGRAM
Ну что, целых четыре скрипта про группировки от подписчицы админа нашего чата Елизаветы

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

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

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

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


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

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


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

📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
2🔥14👍64🍓4
📚 План нашего курса по 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
🔥83🍓3👍2
Google Таблицы
📚 План нашего курса по Google Apps Script (прошел только один урок, набор продолжается) 1. Сначала база — учимся думать как программист и использовать возможности языка: 🧱 Первый урок: — Переменные — Типы данных — Массивы и объекты — Функции — Среда разработки…
Друзья, мы постепенно завершаем набор на курс — завтра уже второй урок 📚

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

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

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

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


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

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

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

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

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


💸 Стоимость курса — 100 000 ₽ (возможны варианты рассрочки)
📌 Бронь, оплата , вопросы — пишите @namokonov или @elizaveta_sh_komarova
🍓2👍1
Media is too big
VIEW IN TELEGRAM
Краснодар

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

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

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

🚀 Наш курс
📗 Канал и Чат
🏄 Заказ работы у нас
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🍓21
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)))))


Таблица с примером
🔥16🍓65👍5
Комиссии ВБ

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

Метод официального 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 В комментариях - готовая Таблица с комиссиями и скриптом, можете просто скопировать её :)
19👍9🔥1
Глубокие интеграции с озон / вб, к примеру - автозаказа товаров

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

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

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

Пишите @namokonov, все расскажу
8🍓1
СУММЕСЛИМН по выбранному товару (поиск строки с помощью ПОИСКПОЗ)

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

Как быть?
Использовать СУММЕСЛИМН / 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))

(но в новых формулах столько функций, что можно и как-нибудь иначе вообще это решить ;) )
👍83🍓1
Google Таблицы
Глубокие интеграции с озон / вб, к примеру - автозаказа товаров Друзья, был у меня один из клиентов по вб (звали его Иван) Мы для него сделали решение для автозаказа новых позиций (то есть, мы смотрели что было продано, сколько у нас оставалсь каждый день…
Media is too big
VIEW IN TELEGRAM
ВБ / WB, устанавливаем честный знак телеграм ботом

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

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

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

@namokonov
🍓3🔥2
"Заказчики" или история про Андрея Галетку

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

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

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

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

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

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

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

PS В комментариях переписка с ним аж с 2020 года
Please open Telegram to view this post
VIEW IN TELEGRAM
12🍓5
Дробим слово (скриптами или формулами)

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

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

Можно скрипты, можно формулы, новые варианты награждаются +7 к карме.
🍓6👍2
Формат личного обучения

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


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


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

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

По стоимости и условиям @namokonov, всё обсудим.
6👍6🔥5🍓1
Друзья, а вас больше!

А у нас в канале больше полезного контента :)

Пробусти, нас, пожалуйста t.me/google_sheets?boost
4🍓2
Google Таблицы
Друзья, а вас больше! А у нас в канале больше полезного контента :) Пробусти, нас, пожалуйста t.me/google_sheets?boost
Спасибо огромное! Осталось буквально 8–10 бустов — дожмём чуть-чуть 💪

По контент-плану дальше такие идеи:

Пишем бота, который отслеживает, сколько днем человек пьет, а сколько пропускает
– Продолжаем разбираться с ограничениями fetchAll в Google Apps Script:
цель — загрузить канал среднего размера за пару часов программно
🍓2
Media is too big
VIEW IN TELEGRAM
Параллельный запрос данных с помощью fetchALL в Google Apps Script

В этом примере мы будем одновременно запрашивать 10 стихотворений с сайта. Используем UrlFetchApp.fetchAll, чтобы ускорить процесс за счёт параллельных запросов.

📹 В видео — подробный разбор скрипта, объяснение каждого шага и демонстрация результата.

💡 Также:
Продолжаю набор на личное обучение по программированию. Заинтересованные уже есть, мест немного, кто действительно хочет – пишите.
🔥6🍓2
Наши ребята, коллеги, друзья — со многими мы общаемся ещё с тех времён, когда был жив мессенджер от Google (давно и благополучно закрывшийся).

Вместе осваивали Telegram, когда он ещё не был в мейнстриме, когда это казалось чем-то экспериментальным и новым.

А вот и каналы, которые выросли из этого опыта:
@gasru — про скрипты от Иванова и Митяйки

@GoogleSheets_ru — про Таблицы и скрипты

@contributor_pw — разработка и автоматизация

@ZiGoomul, @ZiGoomul_GoogleApps, @ZiGoomul_GAS — Таблицы, боты и немножко магии

@GDS_chat — всё про Looker Studio

@BigQuery — когда название говорит само за себя

@STMSol — тоже про Таблицы и скрипты

@MaksymStoianov — авторский канал от Максима

@lemur_excel — канал нашего любимого соавтора Рената, который ведёт его вместе с котом редкой (и продуктивной!) породы

@WorkSmartPartyHard — пока Ренат отдыхает, энергичный Лемур делится лайфхаками продуктивности

👀 И, конечно же, наши:
@google_sheets — канал про Таблицы и скрипты, с вами с 2017 года

@google_spreadsheets_chat — наш уютный чат, велком!
🔥17👍10🍓42
Media is too big
VIEW IN TELEGRAM
Извлекаем все формулы из кода Таблицы! Формулы!

Друзья, Google Таблицы – это на самом деле полноценный веб-сайт, только большой и сложный.

Мы уже показывали, как извлекать из текста страницы все формулы. Давайте повторим:


Откройте любую таблицу Google.

Откройте консоль браузера (нажмите F12).

Вызовите поиск по консоли: на macOS – CMD + OPT + F, на Windows – CTRL + SHIFT + F.

Введите название нужной функции, чтобы найти её в коде.

В моём видео я подробно показывал, как дальше работать с найденным.


Извлечённые формулы собраны в таблицу – хотя половина из них точно не работайте, попробуйте поэкспериментировать.

Пишите в чат, если найдете интересную формулу, про которую никто не знает, кто найдет +10 к карме в чате!
🔥15🍓4
Ссылка на формулы из кода Таблицы, их 606

🎁 Если кто-то найдет, какая формула работает кроме известных и классических – начислим +10 кармы в нашем чате

На картинке формула =DUCKHUNT()
👍73🍓3
Media is too big
VIEW IN TELEGRAM
Решаем список формул!

У нас есть 606 названий — а значит, 606 потенциальных формул.

Что с ними делать?

Конечно же:

1. Добавить = и ()
2. Вставить всё это в Google Таблицу скриптами
3. Посмотреть, что эти формулы будут выводить на самом деле


📽 В видео я подробно показал, как это работает и что с этим делать.

⚡️Заказ работы у нас
9🍓4