Media is too big
VIEW IN TELEGRAM
Парсим текст с сайта скриптами, оставляем только нужное и, внимание, собираем акростих!
Друзья, недавно у нас спросили, как достать баланс пользователя с сайта. Там требовалась авторизация, поэтому мы решили начать с простого примера.
Берём текст случайного стихотворения с https://www.culture.ru/, избавляемся от лишних тегов и спецсимволов, оставляем только текст — и как бонус: если это акростих, собираем его из первых букв строк!
Сам скрипт, код
🍉 И друзья, мы начинаем набор наш курс по программированию
Стоимость — 100 000 рублей. Продолжительность — 2–3 месяца (в зависимости от вашей цели).
📅 Два занятия в неделю, плюс постоянная поддержка (даже после окончания курса) — в закрытом чате.
Пишите @namokonov — с радостью отвечу на любые вопросы!
🍉 И наконец анонс нашего курса по программированию
Друзья, недавно у нас спросили, как достать баланс пользователя с сайта. Там требовалась авторизация, поэтому мы решили начать с простого примера.
Берём текст случайного стихотворения с https://www.culture.ru/, избавляемся от лишних тегов и спецсимволов, оставляем только текст — и как бонус: если это акростих, собираем его из первых букв строк!
Сам скрипт, код
🍉 И друзья, мы начинаем набор наш курс по программированию
- занятия в маленьких группах (до 4–5 человек)
- возможно обучение с нуля: с аргументов, циклов и базовой логики
- доходим до работы с API (WB, Ozon и др.), создаём Telegram-ботов
- из Google Таблиц собираем документы, превращаем их в PDF и рассылаем в чаты
- если кто-то не успевает — договариваемся о созвоне, подсказываем и показываем
Стоимость — 100 000 рублей. Продолжительность — 2–3 месяца (в зависимости от вашей цели).
📅 Два занятия в неделю, плюс постоянная поддержка (даже после окончания курса) — в закрытом чате.
Пишите @namokonov — с радостью отвечу на любые вопросы!
9👍11😁4🍓4❤2🔥1
Курс Евгения Намоконова (автор @google_sheets) по полезному программированию на Google Apps Script и Google Таблицах
(старт в конце мая 2025)
На курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
(старт в конце мая 2025)
На курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
👍7🔥2
Google Таблицы
Парсим текст с сайта скриптами, оставляем только нужное и, внимание, собираем акростих! 🍉 И наконец анонс нашего курса по программированию Друзья, недавно у нас спросили, как достать баланс пользователя с сайта. Там требовалась авторизация, поэтому мы решили…
Почему учиться скриптам стоит именно у нас?
В трёх пунктах:
🍉 7 лет опыта автоматизации — мы настраивали процессы для самых разных бизнесов: от компании по выгулу собак в Петербурге до китайского такси-гиганта Didi в Google Таблицах и GAS-скриптах.
Забавно, но даже в Яндексе, где я работал в "отделе эффективности платформы" (на тот момент) активно использовали Google Таблицы и скрипты
👥 Поддержка от живой команды — вы не будете одни: наши кураторы рядом на всём пути — во время курса и после него, в закрытом чате.
🍍 Мы работаем в небольших группах, разделённых по трём уровням сложности — от новичков до продвинутых. Так каждому будет комфортно и максимально полезно.
Пишите @namokonov — с радостью отвечу на любые вопросы!
В трёх пунктах:
🍉 7 лет опыта автоматизации — мы настраивали процессы для самых разных бизнесов: от компании по выгулу собак в Петербурге до китайского такси-гиганта Didi в Google Таблицах и GAS-скриптах.
Забавно, но даже в Яндексе, где я работал в "отделе эффективности платформы" (на тот момент) активно использовали Google Таблицы и скрипты
👥 Поддержка от живой команды — вы не будете одни: наши кураторы рядом на всём пути — во время курса и после него, в закрытом чате.
🍍 Мы работаем в небольших группах, разделённых по трём уровням сложности — от новичков до продвинутых. Так каждому будет комфортно и максимально полезно.
PS Программирование с нуля — это возможно. Хотите зарабатывать без офиса "на берегу океана" – возможно, только помните, работать на пляже — так себе идея, песок быстро убивает ноутбук :)
Чтобы научиться нужно всего два ресурса — желание и надёжные наставники. С первым — к вам, со вторым — к нам.
Пишите @namokonov — с радостью отвечу на любые вопросы!
👍6🍓6❤1
Друзья, пост от нового модератора чата Алексей 𝕆𝕕𝕪𝕤𝕤𝕖𝕦𝕤, спасибо ему
ОГЛАВЛЕНИЕ таблицы (со ссылками на каждый лист) ФОРМУЛОЙ 😍
⚠️ Главное условие. Таблица должна быть открыта для просмотра.
ИМХО. Страшного в этом ничего нет, т.к. случайно угадать 40 символов URL крайне маловероятно. Можно даже опубликовать таблицу, тогда количество символов в URL увеличится в 2 раза 😉
🟢 Получаем список листов (sheetNames)
🔵 Получаем идентификаторы листов (sheetIDs)
🔴 Создаём гиперссылки из списка листов и их GID:
🔶Пример с подробным описанием
ОГЛАВЛЕНИЕ таблицы (со ссылками на каждый лист) ФОРМУЛОЙ 😍
⚠️ Главное условие. Таблица должна быть открыта для просмотра.
ИМХО. Страшного в этом ничего нет, т.к. случайно угадать 40 символов URL крайне маловероятно. Можно даже опубликовать таблицу, тогда количество символов в URL увеличится в 2 раза 😉
🟢 Получаем список листов (sheetNames)
=IMPORTXML(SS_URL_with_htmlview; "//ul[@id='sheet-menu']/li")
🔵 Получаем идентификаторы листов (sheetIDs)
=IMPORTXML(SS_URL_with_htmlview; "//div[@id='sheets-viewport']/div/@id")
🔴 Создаём гиперссылки из списка листов и их GID:
=ArrayFormula(HYPERLINK("#gid="&sheetIDs; sheetNames))
🔶Пример с подробным описанием
🔥26👍11❤3🍓1
Про курс по программированию, подробно
Друзья, много вопросов в лс приходит про наш курс, так вот, слушайте 🙂
---
0. 🚀 Начало уроков в 11 Мск
1. 📚 Два урока в неделю по 90 минут (45 минут, короткий перерыв и еще 45 минут)
2. ⏰ Три недели обучения
3. 👯♀️ Отдельный чат с нами и с группой для обсуждения вопросов когда угодно, чат будет доступен и после курса
4. 👥 Планируем сформировать 2 группы:
* 🐣 Новички
* 🧠 Advanced
5. 🍍 Ну и конечно же будут доступны записи всех уроков
---
### 🐣 Для новичков:
Изучаем азы программирования:
* переменные и аргументы
* массивы и объекты
* циклы, логирование
* работа с документацией
* простая работа с таблицами, документами, диском, почтой
* базовые
---
### 🧠 Для Advanced:
* подключение к внешним API и автоматическая загрузка данных (например, из Wildberries по ключу продавца)
* парсинг сайтов
* работа с таблицами через Sheets API
* продвинутая работа с таблицами, документами, диском, почтой
---
### 💼 Дополнительная практика:
Самых активных студентов мы будем подключать к реальным заказчикам.
Под нашим руководством вы пройдёте путь:
* от понимания ТЗ
* через оценку задачи
* до реализации и сдачи результата и получения денег
---
🎯 В результате, если вы действительно будете учиться, то сможете автоматизировать:
* Google Таблицы
* Gmail
* Google Календарь
* Google Документы
* Google Диск
* Научиться работать с разными API, забирать и отдавать данные
---
Стоимость - 100 000 рублей, по любым вопросам, а также деталям оплаты пишите Елизавете @elizaveta_sh_komarova
Друзья, много вопросов в лс приходит про наш курс, так вот, слушайте 🙂
---
0. 🚀 Начало уроков в 11 Мск
1. 📚 Два урока в неделю по 90 минут (45 минут, короткий перерыв и еще 45 минут)
2. ⏰ Три недели обучения
3. 👯♀️ Отдельный чат с нами и с группой для обсуждения вопросов когда угодно, чат будет доступен и после курса
4. 👥 Планируем сформировать 2 группы:
* 🐣 Новички
* 🧠 Advanced
5. 🍍 Ну и конечно же будут доступны записи всех уроков
---
### 🐣 Для новичков:
Изучаем азы программирования:
* переменные и аргументы
* массивы и объекты
* циклы, логирование
* работа с документацией
* простая работа с таблицами, документами, диском, почтой
* базовые
fetch
-запросы---
### 🧠 Для Advanced:
* подключение к внешним API и автоматическая загрузка данных (например, из Wildberries по ключу продавца)
* парсинг сайтов
* работа с таблицами через Sheets API
* продвинутая работа с таблицами, документами, диском, почтой
---
### 💼 Дополнительная практика:
Самых активных студентов мы будем подключать к реальным заказчикам.
Под нашим руководством вы пройдёте путь:
* от понимания ТЗ
* через оценку задачи
* до реализации и сдачи результата и получения денег
---
🎯 В результате, если вы действительно будете учиться, то сможете автоматизировать:
* Gmail
* Google Календарь
* Google Документы
* Google Диск
* Научиться работать с разными API, забирать и отдавать данные
---
Стоимость - 100 000 рублей, по любым вопросам, а также деталям оплаты пишите Елизавете @elizaveta_sh_komarova
1👍12🔥5🍓5❤2
Спарклайн для сводной таблицы: выделяем цветом значения выше среднего, исключаем общий итог
Хотим добавить лаконичную визуализацию к сводной. В Excel можно вставить гистограммы условного форматирования прямо в поле сводной, а в Google Таблицах нам понадобится формула.
Ее логика:
Если в столбце с подписями (A в примере) пусто или "Итого" — возвращаем пустоту, ибо там спарклайн не нужен.
Если не пусто — вставляем спарклайн. Максимальное значение — это второе по величине значение в столбце, где область значений (ибо общий итог не нужно учитывать, он априори больше всех остальных значений, если у вас функция суммирования SUM в поле, а не среднее или максимум, допустим). Это функция НАИБОЛЬШИЙ / LARGE с аргументом 2.
Если хочется спецэффектов (надо красить все значения выше среднего или выше заданного уровня отдельным цветом), color1 спарклайна задаем через функцию ЕСЛИ / IF — проверяем условие (например, что значение больше среднего без учета итога) и получаем разные цвета.
В общем виде:
Таблица с примером
Это один из примеров нового курса "Сводные таблицы Google Spreadsheets". Курс можно найти по ссылке. Открытый видеоурок из курса — тут.
⭐️ Заказ работы у нас
Хотим добавить лаконичную визуализацию к сводной. В Excel можно вставить гистограммы условного форматирования прямо в поле сводной, а в Google Таблицах нам понадобится формула.
Ее логика:
Если в столбце с подписями (A в примере) пусто или "Итого" — возвращаем пустоту, ибо там спарклайн не нужен.
Если не пусто — вставляем спарклайн. Максимальное значение — это второе по величине значение в столбце, где область значений (ибо общий итог не нужно учитывать, он априори больше всех остальных значений, если у вас функция суммирования SUM в поле, а не среднее или максимум, допустим). Это функция НАИБОЛЬШИЙ / LARGE с аргументом 2.
Если хочется спецэффектов (надо красить все значения выше среднего или выше заданного уровня отдельным цветом), color1 спарклайна задаем через функцию ЕСЛИ / IF — проверяем условие (например, что значение больше среднего без учета итога) и получаем разные цвета.
В общем виде:
=MAP(столбец подписей;столбец значен
LAMBDA(a;b;
ЕСЛИ (ИЛИ(a="Итого";ЕПУСТО(a));"";
SPARKLINE(b;{"Charttype" \ "bar" ; "max" \ НАИБОЛЬШИЙ($B$2:$B;2) ; "color1" \ ЕСЛИ(b>среднее, уровень или другое условие; первый цвет ; второй цвет) }))))
Таблица с примером
Это один из примеров нового курса "Сводные таблицы Google Spreadsheets". Курс можно найти по ссылке. Открытый видеоурок из курса — тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🍓4❤1
Привет! Есть у музыканта Дельфина грустное стихотворение, приведем его целиком:
Это твой щенок, теперь он твой навсегда
И ты не хочешь, но считаешь его дни и года
И с каждым новым днём твоя любовь к нему растёт
Она станет огромной, когда он умрёт...
Если сухо изложить факты, то пока щенок жив, любовь к нему растёт, когда щенок отправился в собачий рай - любовь больше не растет.
Как это стихотворение можно написать с помощью Google Apps Script?
function дельфин() {
let щенок = Array(100); //объявляем щенка как массив из 100 элементов
let любовь = 0; //объявляем любовь равной нулю
console.log('сумма любви к щенку', любовь); //сумма любви к щенку 0
console.log('остаток щенка', щенок.length); //остаток щенка 100
console.log('--- цикл ---');
while (щенок.length) { //объявляем цикл, который действует, пока у массива щенок остается длина
любовь += щенок.length; //увеличиваем каждую итерацию цикла нашу любовь на оставшуюся длину щенка
щенок = щенок.slice(1); //уменьшаем массив щенок на один элемент
};
console.log('сумма любви к щенку', любовь); //сумма любви к щенку 5050
console.log('остаток щенка', щенок.length); //остаток щенка 0
};
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍21🍓3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
onEdit, возвращающий email автора? (на бесплатных аккаунтах)
Друзья, короткое видео с загадкой.
Предположите, как работает решение и почему onEdit, которому не положено возвращать email пользователя - все таки его возвращает.
Пишите в комментарии.
PS На workspace-аккаунтах проблем с возвратов почт нет, там можно все делать без ухищрений.
Друзья, короткое видео с загадкой.
Предположите, как работает решение и почему onEdit, которому не положено возвращать email пользователя - все таки его возвращает.
Пишите в комментарии.
PS На workspace-аккаунтах проблем с возвратов почт нет, там можно все делать без ухищрений.
🍓6❤1
Google Таблицы
onEdit, возвращающий email автора? (на бесплатных аккаунтах) Друзья, короткое видео с загадкой. Предположите, как работает решение и почему onEdit, которому не положено возвращать email пользователя - все таки его возвращает. Пишите в комментарии. PS…
onEdit, возвращающий email автора - разгадка
Друзья, спасибо за варианты.
Решение такое - делаем отдельные защищенные диапазоны для каждого возможного автора таблицы и в названии диапазона пишем его email.
Далее в onEdit() просто перебираем эти диапазоны, если человек может редактировать диапазон - то берем название диапазона (в которое мы написали email автора) и вставляем как примечаение в ячейку
Решение неоптимальное, но мы все равно им с вами делимся, чтобы вы знали, как скриптами и смекалкой иногда можно увеличить возможности, доступные из коробки.
Идея читателя нашешо чата @m_maker85
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
Друзья, спасибо за варианты.
Решение такое - делаем отдельные защищенные диапазоны для каждого возможного автора таблицы и в названии диапазона пишем его 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();
};
};
};
Идея читателя нашешо чата @m_maker85
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
🔥14👍7🍓3❤1
Задачка для подписчиков
Друзья, привет! Всех с началом новой недели.
У нас для вас есть небольшая задачка - сделайте классическую, таблицу умножения от 1 * 1 до 9 * 9, реализовать можно как формулами, так и скриптами.
То, что получится - пишите в комментарии или в наш чат @google_spreadsheets_chat
🚀 В следующем посте покажу свой вариант с помощью скриптов.
Друзья, привет! Всех с началом новой недели.
У нас для вас есть небольшая задачка - сделайте классическую, таблицу умножения от 1 * 1 до 9 * 9, реализовать можно как формулами, так и скриптами.
То, что получится - пишите в комментарии или в наш чат @google_spreadsheets_chat
🚀 В следующем посте покажу свой вариант с помощью скриптов.
🍓12👍2
Media is too big
VIEW IN TELEGRAM
Что вы конкретно получите на нашем курсе по разработке на Таблицах, пример
Показываю в видео два примера обращения к API OZON
— получает токен
— получаем по этому токену рекламные кАмпании, берем из них отдельные элементы и вставляем всё в Таблицу
Таблица с кодом
На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
Показываю в видео два примера обращения к API OZON
— получает токен
— получаем по этому токену рекламные кАмпании, берем из них отдельные элементы и вставляем всё в Таблицу
Таблица с кодом
На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
1👍7🍓4
Google Таблицы
Задачка для подписчиков Друзья, привет! Всех с началом новой недели. У нас для вас есть небольшая задачка - сделайте классическую, таблицу умножения от 1 * 1 до 9 * 9, реализовать можно как формулами, так и скриптами. То, что получится - пишите в комментарии…
✅ Таблица умножения — решена!
Друзья, огромное спасибо за вашу невероятную активность в комментариях!
Честно, мы не ожидали, что будет настолько много вариантов формул — и таких разных, и таких находчивых.
Каждому, кто попробовал себя в этом задании, мы начислили +5 кармы в нашем чате — заслуженно 💎
Особенно радует, что даже простая задача может вдохновить на десятки оригинальных решений.
Одно из многих элегантных решений:
Просто, понятно и мгновенно работает. 🧠⚡
Ну а напоследок — скрипт или пользовательская функция:
Автоматизация — это не страшно.
Это весело, эффективно и реально экономит часы жизни. Наш курс
Друзья, огромное спасибо за вашу невероятную активность в комментариях!
Честно, мы не ожидали, что будет настолько много вариантов формул — и таких разных, и таких находчивых.
Каждому, кто попробовал себя в этом задании, мы начислили +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)
)
);
}
Автоматизация — это не страшно.
Это весело, эффективно и реально экономит часы жизни. Наш курс
👍29🔥6❤4🍓3
Media is too big
VIEW IN TELEGRAM
Загружаем товары с Ozon через API
*или то, чем мы с вами и будем весело заниматься на курсе 🙂 *
Сегодня — научимся тянуть список всех товаров нашего купца (или, как говорят на Ozon, селлера) через API прямо в Google Таблицы.
Я специально разобрал код в видео медленно, пошагово и с объяснениями, также сам код прокомментировал внизу
🚀 Про наш курс, старт уже на следующей неделе t.me/google_sheets/1685
*или то, чем мы с вами и будем весело заниматься на курсе 🙂 *
Сегодня — научимся тянуть список всех товаров нашего купца (или, как говорят на 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
👍9🔥2🍓1
Про наш курс программирование, главное
На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
На нашем курсе не грузим теорией. Учим тому, что реально используют на работе — и за что платят заказчики:
✅ Автоматизация Google Таблиц, Документов, Диска, Почты и Календаря
✅ Подключение к внешним API и загрузка данных напрямую в Таблицы
✅ Парсинг сайтов
✅ Скрипты, которые создают отчёты на основе формул
Только практические кейсы — никаких «абстрактных задачек».
🚀 Про курс — коротко:
1. 💸 Стоимость — 100 000 ₽
2. 👥 Маленькие группы
3. 🖥 Онлайн-занятия 2 раза в неделю + записи
4. 💬 Чат участников
5. 📆 Длительность — 1,5–2 месяца
6. 🎯 Наша цель — *реально научить*
❓Вопросы и бронь, оплата — @namokonov, @elizaveta_sh_komarova
🌪 Стартуем скоро!
🍓6❤1👍1
Media is too big
VIEW IN TELEGRAM
Аааа! Наш курс (базовая группа стартует уже завтра)
Поэтому вам вот такой интересный и простой onEdit с хранением в скрипт проперти и со структурой объект всего - объект
Мало понимаете в скриптах? Базе мы вас научим и не только базе, а и еще действительно пользе :)
🚀 Про наш курс, старт уже на следующей неделе t.me/google_sheets/1685
Поэтому вам вот такой интересный и простой 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
19❤3👍3🍓2
This media is not supported in your browser
VIEW IN TELEGRAM
Простая задача для подписчков, проперти
🍓4
Google Таблицы
Простая задача для подписчков, проперти
А теперь, друзья, ответ на вопрос от телезрителя из солнечной Турции!
Не Мехмет интересуется:
«Как узнать, сколько памяти занимают мои проперти в Google Apps Script в проекте? Не пора ли их очищать?
Начнем с того, что общий доступный объем (неудаляемый) - 500 кб
Объем пары (ключ, значение) - 9 кб
https://developers.google.com/apps-script/guides/services/quotas#current_limitations
Скрипт, которым вы можете проверить занятый объем
PS Минус GAS, что вторую функцию можно было бы заменить на простой TextEncoder — это встроенный класс в JavaScript (в браузерах и в некоторых средах выполнения), который превращает строку в массив байтов. Основное применение — когда тебе нужно понять, сколько реально весит строка в байтах, а не просто её длину в символах. Но нет TextEncoder в GAS, поэтому пришлось писать руками.
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
Не Мехмет интересуется:
«Как узнать, сколько памяти занимают мои проперти в 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, поэтому пришлось писать руками.
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
👍6❤1🍓1
Друзья, подскажите!
Кто-нибудь записывает вебинары с автоматическими субтитрами и полной расшифровкой речи (желательно с таймкодами)?
Мы перепробовали разные инструменты, но пока не нашли идеальное решение.
Будем очень благодарны за ваши советы и опыт — делитесь в комментариях! 🙏
Кто-нибудь записывает вебинары с автоматическими субтитрами и полной расшифровкой речи (желательно с таймкодами)?
Мы перепробовали разные инструменты, но пока не нашли идеальное решение.
Будем очень благодарны за ваши советы и опыт — делитесь в комментариях! 🙏
👍3🍓1
Автоматическая группировка для строк — всё по взаимному согласию и по условиям. 😉
У нас есть скрипт, который автоматически группирует строки в Google Таблицах по заданным условиям. Работает стабильно, руками ничего складывать не нужно — всё само.
Делиться или оставить в столе до лучших времён?
Напишите в комментариях, пригодится вам такой помощник — поймём, стоит ли выкладывать. 👇🙂
У нас есть скрипт, который автоматически группирует строки в Google Таблицах по заданным условиям. Работает стабильно, руками ничего складывать не нужно — всё само.
Делиться или оставить в столе до лучших времён?
Напишите в комментариях, пригодится вам такой помощник — поймём, стоит ли выкладывать. 👇🙂
🔥46👍16❤4🍓2
🧔♂️ Для нашего древнейшего клиента — барбера Алексея из Казани (и всех, кто в теме):
В Google Таблице — два скрипта:
1️⃣ Вытаскиваем из Ozon все товары 🛒
2️⃣ Достаем список всех складов 📦
Работают чётко, как ножницы в руках опытного мастера 💇♂️
Код с комментами отдельно
Информацию по курсу (набираем еще всю следущую неделю)
👉 t.me/google_sheets/1685
📌 Бронь, оплата , вопросы — пишите @namokonov или @elizaveta_sh_komarova
В 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
👍8🔥3🍓3