Как узнать, что в Таблице удалили строки: готовый скрипт
Друзья, наш подписчик Дмитрий обратился за помощью - у него завёлся сотрудник, который удаляет в таблице строки, нужно как-то про это узнавать.
Мы написали короткий скрипт, он ниже
При удалении строки скрипт отправит на введённую почту (в примере это grclubpoker@gmail.com) сообщение, как на скриншоте.
Чтобы скрипт заработал:
Этот устанавливаемый триггер будет реагировать на изменения структуры Таблицы, к ним относится и удалении строк.
А еще в коде функция
🐟 Заказать работу у нас: @namokonov
Друзья, наш подписчик Дмитрий обратился за помощью - у него завёлся сотрудник, который удаляет в таблице строки, нужно как-то про это узнавать.
Мы написали короткий скрипт, он ниже
function onCha(e) {
if (e.changeType != 'REMOVE_ROW') { return; };
const sh = e.source.getActiveSheet();
const shName = sh.getName();
const range = sh.getActiveRange();
const startRow = range.getRow();
const numRows = range.getNumRows();
const msg = `В Таблице, на листе ${shName}, начиная со строки ${startRow} удалено ${numRows} ${plural(numRows)}, примите меры`;
GmailApp.sendEmail('grclubpoker@gmail.com', 'удалены строки', msg);
};
function plural(n) {
const forms = ["строка", "строки", "строк"]
n = Math.abs(n) % 100;
const n1 = n % 10;
if (n > 10 && n < 20) return forms[2];
if (n1 > 1 && n1 < 5) return forms[1];
if (n1 === 1) return forms[0];
return forms[2];
};
При удалении строки скрипт отправит на введённую почту (в примере это grclubpoker@gmail.com) сообщение, как на скриншоте.
Чтобы скрипт заработал:
1) поместите его в редактор скриптов в своей Таблице
2) Кликните на секундомер и откройте триггеры
3) Добавьте триггер: функцию onCha на тип события "Change / При изменении"
Этот устанавливаемый триггер будет реагировать на изменения структуры Таблицы, к ним относится и удалении строк.
А еще в коде функция
plural, она склоняет строки в завимости от их количества :)🐟 Заказать работу у нас: @namokonov
4👍32🔥17❤6👎1🤡1
Если вы очень не любите Excel... и не любите тех, кто там работает...
эта статья для вас! Парочка приемов оттуда в экселе ваших коллег — и вот уже в офис вызывают экзорциста, а все стремительно переходят на Google Таблицы😈
Розыгрыши в Excel: немного табличного хулиганства (и пользы тоже)
При написании статьи ни один офисный сотрудник не пострадал, все тестировалось только на себе и коте Лемуре.
---
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
эта статья для вас! Парочка приемов оттуда в экселе ваших коллег — и вот уже в офис вызывают экзорциста, а все стремительно переходят на Google Таблицы😈
Розыгрыши в Excel: немного табличного хулиганства (и пользы тоже)
При написании статьи ни один офисный сотрудник не пострадал, все тестировалось только на себе и коте Лемуре.
---
📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
👍10🔥6🍓3❤2👎1🤡1
IMPORTRANGE сломался 🚫
Друзья, наверняка вы видели такую или похожую ошибку, когда пытались загрузить слишком большой диапазон данных с помощью
Иногда и на меньшем объёме данных
Есть решение: делим
Получится что-то вроде:
Но, если фрагментов много, то писать такую формулу руками неудобно.
Напишем же формулу формулой :)
Что здесь происходит?
🔹
🔹
🔹
🔹
🔹
Дополнительные материалы:
Большая статья про
С помощью скрипта даём доступ к Таблицам, чтобы IMPORTRANGE заработал без ручного расшаривания
🐟 Заказать работу у нас: @namokonov
Или результат слишком большой или данные не выводятся вообще
Друзья, наверняка вы видели такую или похожую ошибку, когда пытались загрузить слишком большой диапазон данных с помощью
IMPORTRANGE.Иногда и на меньшем объёме данных
IMPORTRANGE "ломается" и не выводит результат.Есть решение: делим
IMPORTRANGE на небольшими диапазоны (скажем, по 1000 строк) и соединяем их с помощью фигурных скобо {} или VSTACK.Получится что-то вроде:
={
IMPORTRANGE(url;"a1:1000");
IMPORTRANGE(url;"a1001:2000");
IMPORTRANGE(url;"a1:1000")
}
Но, если фрагментов много, то писать такую формулу руками неудобно.
Напишем же формулу формулой :)
=let(
_url;"https://docs.google.com/";
_shName;"Лист1";
_step;1000;
_n;25;
_s;SEQUENCE(_n;1;2;_step);
REDUCE(importrange(_url;_shName & "!1:1");_s;
LAMBDA(_acc;_add1; IFNA(VSTACK(_acc;IFERROR(IMPORTRANGE(_url; _shName & "!" & _add1 & ":" & _add1 + _step - 1)))))))
Что здесь происходит?
🔹
SEQUENCE генерирует стартовые строки: 2, 1002, 2002…🔹
IMPORTRANGE тянет по 1000 строк за раз.🔹
VSTACK складывает всё друг под другом.🔹
REDUCE аккуратно объединяет блоки в единую таблицу.🔹
LET делает формулу читабельной, как будто это вовсе не формула.Дополнительные материалы:
Большая статья про
IMPORTRANGE от нашего маэстро Рената ШагабутдиноваС помощью скрипта даём доступ к Таблицам, чтобы IMPORTRANGE заработал без ручного расшаривания
🐟 Заказать работу у нас: @namokonov
2❤38🔥25👍16🍓3👎1🤡1
Получаем список с отдельными строками для каждой даты каждого этапа — одной формулой
Что тут происходит? Мы задаем функцию f.
На входе она получает один параметр x — в нашей задаче это название этапа.
И делает следующее:
Берет даты на столбец и на два правее от названия этапа (это делает функция СМЕЩ / OFFSET).
Превращает эти даты в последовательность дат от начала и до конца с помощью SEQUENCE. Чтобы не повторять большую конструкцию, называем ее "даты" с помощью функции LET — все это уже внутри нашей "пользовательской" функции f.
Повторяем название этапа с помощью функции MAKEARRAY. Ну а число дат в последовательности считаем через старый добрый СЧЁТ / COUNT.
Соединяем (HSTACK) эти даты с названием этапа, повторенным столько раз, сколько в нем дат:
И далее эту функцию f мы используем. В качестве первоначального аргумента в REDUCE мы отправляем заголовки
{"Название" \ "Дата"}, а далее накапливаем результат: пробегаемся по списку этапов, для каждого получаем таблицу с помощью написанной нами ранее функции f, и добавляем полученные таблицы одна под другой с помощью VSTACK.
Вся формула:
Альтернативное решение:
Ссылка на таблицу с обеими формулами
Что тут происходит? Мы задаем функцию f.
На входе она получает один параметр x — в нашей задаче это название этапа.
И делает следующее:
Берет даты на столбец и на два правее от названия этапа (это делает функция СМЕЩ / OFFSET).
Превращает эти даты в последовательность дат от начала и до конца с помощью SEQUENCE. Чтобы не повторять большую конструкцию, называем ее "даты" с помощью функции LET — все это уже внутри нашей "пользовательской" функции f.
SEQUENCE(СМЕЩ(x;0;2)-СМЕЩ(x;0;1)+1;1;СМЕЩ(x;0;1))
Повторяем название этапа с помощью функции MAKEARRAY. Ну а число дат в последовательности считаем через старый добрый СЧЁТ / COUNT.
MAKEARRAY(СЧЁТ(даты);1;LAMBDA(i;j;x))
Соединяем (HSTACK) эти даты с названием этапа, повторенным столько раз, сколько в нем дат:
HSTACK(MAKEARRAY(СЧЁТ(даты);1;LAMBDA(i;j;x));даты))
И далее эту функцию f мы используем. В качестве первоначального аргумента в REDUCE мы отправляем заголовки
{"Название" \ "Дата"}, а далее накапливаем результат: пробегаемся по списку этапов, для каждого получаем таблицу с помощью написанной нами ранее функции f, и добавляем полученные таблицы одна под другой с помощью VSTACK.
REDUCE({"Название" \ "Дата"};Данные[Название]; LAMBDA(acc;val; VSTACK(acc; f(val)))))
Вся формула:
=LET(f; LAMBDA(x; LET(даты; SEQUENCE(СМЕЩ(x;0;2)-СМЕЩ(x;0;1)+1;1;СМЕЩ(x;0;1)); HSTACK(MAKEARRAY(СЧЁТ(даты);1;LAMBDA(i;j;x));даты)));
REDUCE({"Название" \ "Дата"};Данные[Название]; LAMBDA(acc;val; VSTACK(acc; f(val)))))
Альтернативное решение:
=ARRAYFORMULA(SPLIT(TOCOL( MAP(A2:A4;B2:B4;C2:C4;LAMBDA(a;b;c;a & "#" & ТЕКСТ(ТРАНСП( SEQUENCE(c-b + 1;1;b));"dd.mm.yyyy")));1);"#"))
Ссылка на таблицу с обеими формулами
🔥6👍5❤2👎1🤡1
🚀 Курс от авторов и модераторов канала @google_sheets: Скрипты и Формулы в Google Таблицах
Курс для тех, кто ежедневно работает в Таблицах и хочет делать свою работу быстрее и проще.
Если вы давно хотели уверенно владеть формулами и функциями, автоматизировать рутину и начать писать скрипты на "вайб-кодинге": это ваш поток.
Что вас ждёт
• 13 уроков по 1.5–2 часа
• Два занятия в неделю
• Домашние задания после каждого урока
• Личные чатики с поддержкой и ответами на ваши вопросы по Таблицам
• Записи уроков остаются у вас навсегда
• Исходные и готовые таблицы со всеми примерами и дополнительные материалы
• Индивидуальная обратная связь от лектора по каждому выполненному заданию — в формате скринкаста
Формулы:
от базы и логики до ПРОСМОТРX, массивов, LET, LAMBDA и собственных функций.
Скрипты:
автоматизация рутины, onEdit / onOpen / onChange, интеграции по API, генерация из Таблицы договоров в PDF, работа с файлами, подключение ИИ и разбор реальных кейсов.
Сейчас стоимость курса 50 000. дальше стоимость будет увеличиваться.
Можно оплатить со счёта компании, мы сделаем чек.
Чтобы задать вопросы и присоединиться, напишите в личку @namokonov.
Курс для тех, кто ежедневно работает в Таблицах и хочет делать свою работу быстрее и проще.
Если вы давно хотели уверенно владеть формулами и функциями, автоматизировать рутину и начать писать скрипты на "вайб-кодинге": это ваш поток.
Что вас ждёт
• 13 уроков по 1.5–2 часа
• Два занятия в неделю
• Домашние задания после каждого урока
• Личные чатики с поддержкой и ответами на ваши вопросы по Таблицам
• Записи уроков остаются у вас навсегда
• Исходные и готовые таблицы со всеми примерами и дополнительные материалы
• Индивидуальная обратная связь от лектора по каждому выполненному заданию — в формате скринкаста
Формулы:
от базы и логики до ПРОСМОТРX, массивов, LET, LAMBDA и собственных функций.
Скрипты:
автоматизация рутины, onEdit / onOpen / onChange, интеграции по API, генерация из Таблицы договоров в PDF, работа с файлами, подключение ИИ и разбор реальных кейсов.
Сейчас стоимость курса 50 000. дальше стоимость будет увеличиваться.
Можно оплатить со счёта компании, мы сделаем чек.
Чтобы задать вопросы и присоединиться, напишите в личку @namokonov.
3🔥16❤7😱3👎1🤡1🍓1
Google Таблицы
🚀 Курс от авторов и модераторов канала @google_sheets: Скрипты и Формулы в Google Таблицах Курс для тех, кто ежедневно работает в Таблицах и хочет делать свою работу быстрее и проще. Если вы давно хотели уверенно владеть формулами и функциями, автоматизировать…
Media is too big
VIEW IN TELEGRAM
Суммируем по цвету: простой скрипт плюс формула =SUMIF 🎨📊
В Google Таблицах до сих пор нет встроенной возможности суммировать по цвету ячеек, но это не проблема.
Напишем маленький скрипт - пользовательскую функцию - и свяжем ее с формулой
В видео показываю пошагово, как настроить решение и как оно будет работать на ваших данных.
Сам скрипт выложу в комментариях под постом, забирайте.
🚀 Хотите не только повторить примеры с канала, но и системно прокачать навыки?
Курс
• для тех, кто каждый день работает в Таблицах
• для тех, кто хочет автоматизировать рутину
• для тех, кто давно смотрит на Apps Script, но "потом"
📎 Сейчас стоимость 45 000, ближе к старту будет увеличиваться
В Google Таблицах до сих пор нет встроенной возможности суммировать по цвету ячеек, но это не проблема.
Напишем маленький скрипт - пользовательскую функцию - и свяжем ее с формулой
=SUMIF, чтобы всё заработало.В видео показываю пошагово, как настроить решение и как оно будет работать на ваших данных.
Сам скрипт выложу в комментариях под постом, забирайте.
🚀 Хотите не только повторить примеры с канала, но и системно прокачать навыки?
Курс
• для тех, кто каждый день работает в Таблицах
• для тех, кто хочет автоматизировать рутину
• для тех, кто давно смотрит на Apps Script, но "потом"
📎 Сейчас стоимость 45 000, ближе к старту будет увеличиваться
❤11🔥8
Наш маленький гайд по работе с заказчиками
Друзья, у нас в сообществе много фрилансеров. Фриланс отличается от найма тем, что клиентов можно выбирать. Пользуйтесь этим.
Мы с нашей небольшой командой уже 8 лет делаем задачи на заказ.
Сегодня напишем советы про клиентов, которых лучше избегать, чтобы сохранить время и хорошее настроение:
🚫 Клиент, отрицающий ТЗ как факт 😀
Когда вам пишут (реальная цитата): "ТЗ писать не буду, если я напишу ТЗ, то зачем вы мне нужны, я сам все сделаю".
Есть промежуточные варианты, когда ТЗ выглядит как набор войсов, если вам так комфортно работать, вы немного телепат, то вариант, пробуйте.
🚫 Клиент, знающий все лучше вас
Ваши советы по разработке не слушают и говорят что-то вроде: "Вот я тут с ИИ два месяца посидел и хорошо научился во всем разбираться, сейчас я с Таблицами на ты и поэтому делайте как я скажу".
🚫 Клиент, помогающий вам с помощью ИИ
Встречается особенно в последнее время. ChatGPT дает обманчивую возможность написать код через промпт, но сейчас это все еще часто получается сыровато. Клиент вдохновляется, сам вставляет код, а код, к примеру, запрашивает данные из API и вставляет их по одной строке поочередно.
Работает в целом? Да. Плохо написано? Тоже да 🙂
И тут у вас вилка - бодаться со вставленным кодом, править его, а потом есть шанс услышать, а зачем было потрачено время, я же уже все сделал.
Ну и пара полезных лайфхаков
✅ Фиксируем скоуп задач и просим подтердить его клиента
Когда договорились о наборе задач, непременно зафиксируйте его где-то, можно прямо сообщением в телеграме. И напишите "делаем конкретно вот это за такую сумму, все верно?
Это поможет вам в случаях, когда вы сделали, а заказчикам пришли новые идеи, требуюших больших изменений и они просят их сделать без доплаты.
✅ Всегда берите аванс
Чаще всего все платят, но если вы начнете работать, а к клиенту вернется его старый программист или он откроет в себе возможности писателя кода через ИИ или он проиграет все на ставке, вы получите плохие эмоции из-за потраченноего времени.
✅ Берите запас по срокам реализации.
Не ставьте, кроме очень уж простых задач короткие сроки, вот это вот "сделаю до завтра", оно достаточно опасно, всегда стоит взять небольшой запас время на всякий случай. Сделаете быстрее - отлично, что-то случится - у вас будет запас.
✅ Если компания хочет заплатить как юрлицо
В 90 % случаев достаточно статуса самозанятого. Оформляется он очень просто в приложении: счет выставляется через приложение, клиент платит на вашу карту как физлица, а после оплаты вы формируете чек и отправляете его.
Если компания просит договор или акт, а вы такого ни разу не делали, просто поищите в интернете похожий договор на предоставление услуг разработки, выкиньте лишние пункты, подпишитесь прямо на компьютере, сохраните как PDF и отправьте. Чаще всего этого хватает, сейчас подписывать договор через электронный документооборот просят редко.
✅ Новые задачки для себя
Если есть возможность сделать то, что вы уже делали, и немножко залезть в новую сферу, выбирайте новое. Штамповать то, что вы умеете, может быть и денежно, но достаточно быстро наскучивает и приводит к выгоранию.
✅ Если можно избежать созвона - избегайте
Зачастую в переписке за 5 минут вы получите всю информацию, которую вам будут рассказывать на созвоне.
Но тут есть исключения: некоторым сложно в переписке, и вот тут лучше созвониться, чем задавать 150 вопросов 🙂
Друзья, всем удачи, хороших клиентов и интересных задач, ну и не бойтесь отказывать людям, если чувствуете сомнения и вам с ними работать некомфортно или задача неинтересна, вы не в найме, у вас есть эта опция.
💡 А вы с какими "красными флагами" сталкивались? Напишите в комментах, добьем список.
Друзья, у нас в сообществе много фрилансеров. Фриланс отличается от найма тем, что клиентов можно выбирать. Пользуйтесь этим.
Мы с нашей небольшой командой уже 8 лет делаем задачи на заказ.
Сегодня напишем советы про клиентов, которых лучше избегать, чтобы сохранить время и хорошее настроение:
🚫 Клиент, отрицающий ТЗ как факт 😀
Когда вам пишут (реальная цитата): "ТЗ писать не буду, если я напишу ТЗ, то зачем вы мне нужны, я сам все сделаю".
Есть промежуточные варианты, когда ТЗ выглядит как набор войсов, если вам так комфортно работать, вы немного телепат, то вариант, пробуйте.
🚫 Клиент, знающий все лучше вас
Ваши советы по разработке не слушают и говорят что-то вроде: "Вот я тут с ИИ два месяца посидел и хорошо научился во всем разбираться, сейчас я с Таблицами на ты и поэтому делайте как я скажу".
🚫 Клиент, помогающий вам с помощью ИИ
Встречается особенно в последнее время. ChatGPT дает обманчивую возможность написать код через промпт, но сейчас это все еще часто получается сыровато. Клиент вдохновляется, сам вставляет код, а код, к примеру, запрашивает данные из API и вставляет их по одной строке поочередно.
Работает в целом? Да. Плохо написано? Тоже да 🙂
И тут у вас вилка - бодаться со вставленным кодом, править его, а потом есть шанс услышать, а зачем было потрачено время, я же уже все сделал.
Ну и пара полезных лайфхаков
✅ Фиксируем скоуп задач и просим подтердить его клиента
Когда договорились о наборе задач, непременно зафиксируйте его где-то, можно прямо сообщением в телеграме. И напишите "делаем конкретно вот это за такую сумму, все верно?
Это поможет вам в случаях, когда вы сделали, а заказчикам пришли новые идеи, требуюших больших изменений и они просят их сделать без доплаты.
✅ Всегда берите аванс
Чаще всего все платят, но если вы начнете работать, а к клиенту вернется его старый программист или он откроет в себе возможности писателя кода через ИИ или он проиграет все на ставке, вы получите плохие эмоции из-за потраченноего времени.
✅ Берите запас по срокам реализации.
Не ставьте, кроме очень уж простых задач короткие сроки, вот это вот "сделаю до завтра", оно достаточно опасно, всегда стоит взять небольшой запас время на всякий случай. Сделаете быстрее - отлично, что-то случится - у вас будет запас.
✅ Если компания хочет заплатить как юрлицо
В 90 % случаев достаточно статуса самозанятого. Оформляется он очень просто в приложении: счет выставляется через приложение, клиент платит на вашу карту как физлица, а после оплаты вы формируете чек и отправляете его.
Если компания просит договор или акт, а вы такого ни разу не делали, просто поищите в интернете похожий договор на предоставление услуг разработки, выкиньте лишние пункты, подпишитесь прямо на компьютере, сохраните как PDF и отправьте. Чаще всего этого хватает, сейчас подписывать договор через электронный документооборот просят редко.
✅ Новые задачки для себя
Если есть возможность сделать то, что вы уже делали, и немножко залезть в новую сферу, выбирайте новое. Штамповать то, что вы умеете, может быть и денежно, но достаточно быстро наскучивает и приводит к выгоранию.
✅ Если можно избежать созвона - избегайте
Зачастую в переписке за 5 минут вы получите всю информацию, которую вам будут рассказывать на созвоне.
Но тут есть исключения: некоторым сложно в переписке, и вот тут лучше созвониться, чем задавать 150 вопросов 🙂
Друзья, всем удачи, хороших клиентов и интересных задач, ну и не бойтесь отказывать людям, если чувствуете сомнения и вам с ними работать некомфортно или задача неинтересна, вы не в найме, у вас есть эта опция.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤11🍓3
Google Таблицы
Наш маленький гайд по работе с заказчиками Друзья, у нас в сообществе много фрилансеров. Фриланс отличается от найма тем, что клиентов можно выбирать. Пользуйтесь этим. Мы с нашей небольшой командой уже 8 лет делаем задачи на заказ. Сегодня напишем советы…
СКОЛЬКО ДЕНЕГ БРАТЬ 💰, вторая часть
Нашли вы заказчика и задачу, теперь главное - как эту работу оценить.
У нас четыре варианта, расскажу про каждый.
1) Фиксированная плата за задачу
Самый простой и в то же время непростой вариант. Самая частая ошибка: новичок достаточно быстро и не вникая оценивает задачу, радуется, что клиент согласился, а потом, разобравшись, говорит: "Ох, на что я подписался, тут столько нюансов". Но уже поздно, надо делать.
Поэтому, если оцениваете задачу, не делайте это слишком быстро. Можете сначала назвать вилку стоимости, затем изучить ТЗ, поспрашивать заказчика, прописать тот скоуп (объем работ), который вы берете на себя, подтвердить его у заказчика и уже после этого называть комфортную для вас цену.
2) Почасовка ⏱️
Допустим, вас пригласили поддерживать ряд Таблиц, вы соглашаетесь и озвучиваете стоимость своего часа.
Примерно набросаю цены:
Тут нужно будет завести Табличку и фиксировать время по каждой задаче. Также некоторые клиенты (так как они платят за ваши часы) просят использовать разные трекеры активности, их много, к примеру Clockify.
Фиксировать время на каждую задачку достаточно нудно, но привыкнуть можно.
3) Фиксированная зарплата
Это когда вы договариваетесь об определенной сумме за каждый месяц, гарантируя, что будете на связи, допустим, каждый будний день по 8 часов.
На такое соглашаются редко, но если вы смогли договориться и клиент, и задачи адекватные, то советую держаться за эту работу. Тут вам платят за то, чтобы вы просто были на связи и оперативно реагировали на задачки.
4) Абонемент 🎫
К такой форме мы пришли пару лет назад: это предпродажа определенного количества часов. Скажем, вы продаете 20–40 часов по 2500 рублей за час, получаете 50 000–100 000 рублей и гарантируете клиенту, что в рамках этих часов вы будете делать и саппортить его задачки. В нашем случае часы не сгорают, и можно прийти и через год, и через два года.
Почему это выгоднее, чем ряд мелких задач от разных клиентов? Вам не нужно каждый раз разбираться в построенной системе нового клиента и заново учиться общаться с ним и его коллегами.
И, как я уже писал выше, при любой работе берите аванс 😉
---
Скоро у нас курс: @namokonov
Если вы заинтересованы в разработке, напишите Дмитрию, он всё расскажет @IT_sAdmin
Нашли вы заказчика и задачу, теперь главное - как эту работу оценить.
У нас четыре варианта, расскажу про каждый.
1) Фиксированная плата за задачу
Самый простой и в то же время непростой вариант. Самая частая ошибка: новичок достаточно быстро и не вникая оценивает задачу, радуется, что клиент согласился, а потом, разобравшись, говорит: "Ох, на что я подписался, тут столько нюансов". Но уже поздно, надо делать.
Поэтому, если оцениваете задачу, не делайте это слишком быстро. Можете сначала назвать вилку стоимости, затем изучить ТЗ, поспрашивать заказчика, прописать тот скоуп (объем работ), который вы берете на себя, подтвердить его у заказчика и уже после этого называть комфортную для вас цену.
2) Почасовка ⏱️
Допустим, вас пригласили поддерживать ряд Таблиц, вы соглашаетесь и озвучиваете стоимость своего часа.
Примерно набросаю цены:
Нижняя адекватная граница для человека, который хорошо разбирается в формулах Таблиц, пишет скрипты и может "продать" решение клиенту и сделать автоматизацию - 1500 рублей за час.
Если вы только начинаете, можно и ниже.
Если к вам стоит очередь клиентов и за вами классные кейсы - до 3500 рублей за час.
P.S. Если кому-то это кажется дорого, хороший программист 1С сейчас стоит 6000-8000 рублей за час, и для больших автоматизаций обычно нанимают целую команду.
Тут нужно будет завести Табличку и фиксировать время по каждой задаче. Также некоторые клиенты (так как они платят за ваши часы) просят использовать разные трекеры активности, их много, к примеру Clockify.
Фиксировать время на каждую задачку достаточно нудно, но привыкнуть можно.
3) Фиксированная зарплата
Это когда вы договариваетесь об определенной сумме за каждый месяц, гарантируя, что будете на связи, допустим, каждый будний день по 8 часов.
На такое соглашаются редко, но если вы смогли договориться и клиент, и задачи адекватные, то советую держаться за эту работу. Тут вам платят за то, чтобы вы просто были на связи и оперативно реагировали на задачки.
4) Абонемент 🎫
К такой форме мы пришли пару лет назад: это предпродажа определенного количества часов. Скажем, вы продаете 20–40 часов по 2500 рублей за час, получаете 50 000–100 000 рублей и гарантируете клиенту, что в рамках этих часов вы будете делать и саппортить его задачки. В нашем случае часы не сгорают, и можно прийти и через год, и через два года.
Почему это выгоднее, чем ряд мелких задач от разных клиентов? Вам не нужно каждый раз разбираться в построенной системе нового клиента и заново учиться общаться с ним и его коллегами.
И, как я уже писал выше, при любой работе берите аванс 😉
---
Скоро у нас курс: @namokonov
Если вы заинтересованы в разработке, напишите Дмитрию, он всё расскажет @IT_sAdmin
👍16🔥7❤5🍓1
Google Таблицы
СКОЛЬКО ДЕНЕГ БРАТЬ 💰, вторая часть Нашли вы заказчика и задачу, теперь главное - как эту работу оценить. У нас четыре варианта, расскажу про каждый. 1) Фиксированная плата за задачу Самый простой и в то же время непростой вариант. Самая частая ошибка:…
Техническое задание, оно же ТЗ, часть 3
Друзья, попросить у заказчика ТЗ часто означает загнать его в ступор 🙂
Многие боятся или не умеют писать, говорят что то вроде:
"Давайте я вам на созвоне все объясню" или "Сейчас накидаю ряд войсов".
В итоге ТЗ все равно собираете вы сами.
Хочется дать слово вам, наши уважаемые подписчики 🙌
Как именно вы принимаете ТЗ, если заказчик его не предоставил:
👉 Поделитесь с нами и аудиторией в комментариях.
Друзья, попросить у заказчика ТЗ часто означает загнать его в ступор 🙂
Многие боятся или не умеют писать, говорят что то вроде:
"Давайте я вам на созвоне все объясню" или "Сейчас накидаю ряд войсов".
В итоге ТЗ все равно собираете вы сами.
Хочется дать слово вам, наши уважаемые подписчики 🙌
Как именно вы принимаете ТЗ, если заказчик его не предоставил:
- Google Форма, которую заполняет заказчик
- Телеграм бот, задающий вопросы по шагам
- Файл или шаблон с вопросами, который вы отправляете
- Неспешный диалог в переписке / ряд созвонов, где вы неспешно задаете уточняющие вопросы
- Какой ваш вариант?
👉 Поделитесь с нами и аудиторией в комментариях.
❤8
Media is too big
VIEW IN TELEGRAM
Отправляем сообщение в Telegram прямо из Google Таблицы — без единой строчки кода!
Даже не заходим в редактор Apps Script.
Всё работает благодаря функции =IMPORTDATA, которая делает GET-запрос по введенной ссылке. Мы собираем специальную ссылку с параметрами (токен бота, текст сообщения, chat_id или username) и добавляем к строке чекбокс.
Нажимаем на чекбокс — и сообщение мгновенно улетает в Telegram.
Таблица
Скоро стартует наш авторский курс по Таблицам, вся информация @namokonov
🚀 Присоединяйся, такой состав впервые.
Даже не заходим в редактор Apps Script.
Всё работает благодаря функции =IMPORTDATA, которая делает GET-запрос по введенной ссылке. Мы собираем специальную ссылку с параметрами (токен бота, текст сообщения, chat_id или username) и добавляем к строке чекбокс.
Нажимаем на чекбокс — и сообщение мгновенно улетает в Telegram.
Таблица
https://api.telegram.org/bot<ТОКЕН>/sendMessage?chat_id=<ID_ИЛИ_USERNAME>&text=<ТЕКСТ>&parse_mode=html
Скоро стартует наш авторский курс по Таблицам, вся информация @namokonov
🚀 Присоединяйся, такой состав впервые.
🔥30👍6❤3🍓1
Друзья, в эту субботу (6 декабря) проведем бесплатный вебинар про Таблицы + скрипты.
Сегодня была небольшая накладка со звуком, мы ее исправили.
Материал будет другой, поэтому если кто-то был сегодня, приходите и в субботу.
6 декабря, старт в 12:00 по Москве. Длительность - час.
В субботу дадим вам пользы и ответим на ваши вопросы.
🚀 Ссылку выложим в субботу, за час до вебинара.
Сегодня была небольшая накладка со звуком, мы ее исправили.
Материал будет другой, поэтому если кто-то был сегодня, приходите и в субботу.
6 декабря, старт в 12:00 по Москве. Длительность - час.
В субботу дадим вам пользы и ответим на ваши вопросы.
🚀 Ссылку выложим в субботу, за час до вебинара.
2❤19🔥10🍓1
📹 Запись вебинара: LAMBDA без боли и магии
Залили видео с сегодняшнего вебинара про функцию
Разбираем на практике:
Запись вебинара про формулы (убрали ссылку на ютуб, многие жаловались, теперь кинескоп):
https://kinescope.io/bxMErYym4i1F2FAUSYpBBz
Таблица со всеми примерами из видео
Таблица с примерами по скриптам
🚀 Мой Курс "Формулы и Таблицы" скоро стартует!
Что по деньгам:
- Текущая стоимость 45 000 за 12 уроков
- Цена будет повышаться ближе к старту
По любым вопросам по курсу пишите @namokonov
ПС переходим на другой лендинг, завтра выложим ссылку
Залили видео с сегодняшнего вебинара про функцию
LAMBDA от Рената.Разбираем на практике:
- Зачем нужна LAMBDA и чем она полезна в реальной работе
- MAP и разные варианты: один столбец, двумерный массив, несколько массивов
- BYROW для обработки строк: когда он выручает
- LAMBDA vs старые формулы массива: что упрощает, а что заменяет
- Связка MAP + INDIRECT: как по списку обрабатывать данные с нескольких листов
Запись вебинара про формулы (убрали ссылку на ютуб, многие жаловались, теперь кинескоп):
https://kinescope.io/bxMErYym4i1F2FAUSYpBBz
Таблица со всеми примерами из видео
Таблица с примерами по скриптам
🚀 Мой Курс "Формулы и Таблицы" скоро стартует!
Что по деньгам:
- Текущая стоимость 45 000 за 12 уроков
- Цена будет повышаться ближе к старту
По любым вопросам по курсу пишите @namokonov
ПС переходим на другой лендинг, завтра выложим ссылку
🔥19❤3
Media is too big
VIEW IN TELEGRAM
🚀 Курс про Таблицы и скрипты скоро!
Вам точно интересно, кто вас будет учить, давайте знакомиться.
В видео я рассказываю:
- кто я и с чего всё начиналось
- мой путь в IT
- как я дошёл до работы с Google Таблицами и причем здесь Камбоджа
🎁 А уже ЗАВТРА бесплатный вебинар
6 декабря, старт в 12:00 по Москве. Длительность - час.
Вы сможете задать вопросы и понять, подходит ли вам обучение. Ссылка будет за час до начала
Если есть вопросы сейчас - пишите мне @namokonov
Вам точно интересно, кто вас будет учить, давайте знакомиться.
В видео я рассказываю:
- кто я и с чего всё начиналось
- мой путь в IT
- как я дошёл до работы с Google Таблицами и причем здесь Камбоджа
🎁 А уже ЗАВТРА бесплатный вебинар
6 декабря, старт в 12:00 по Москве. Длительность - час.
Вы сможете задать вопросы и понять, подходит ли вам обучение. Ссылка будет за час до начала
Если есть вопросы сейчас - пишите мне @namokonov
2🔥9❤4👍3🍓2
Media is too big
VIEW IN TELEGRAM
Запись бесплатного вебинара + спеццена на курс 🎁
Запись нашего вебинара уже готова 🎥
Мы разобрали:
• как собирать массивы формулами через
• как работает скрипт отправки писем по чекбоксу
• пример интеграции с API АКСЕНТА
Таблица с примерами
И самое важное: сегодня для участников сегодняшнего вебинара действует специальная цена на курс "Таблицы + скрипты" - 40 000 рублей.
Если появились любые вопросы или хотите забронировать место @namokonov
Запись нашего вебинара уже готова 🎥
Мы разобрали:
• как собирать массивы формулами через
{}, VSTACK, HSTACK• как работает скрипт отправки писем по чекбоксу
• пример интеграции с API АКСЕНТА
Таблица с примерами
И самое важное: сегодня для участников сегодняшнего вебинара действует специальная цена на курс "Таблицы + скрипты" - 40 000 рублей.
Если появились любые вопросы или хотите забронировать место @namokonov
🔥12👍6❤5🍓3
Спасибо Ренату 🙂
Друзья, мой соавтор по каналу Ренат Шагабутдинов решил сосредоточиться на своем проекте @lemur_excel, поэтому этот канал дальше буду вести только я, Евгений Намоконов.
Мы с Ренатом вместе написали книгу "Google Таблицы. Это просто. Функции и приемы"
Также мы вместе делали курс на Скиллбоксе и много лет вели этот канал бок о бок. Ренат больше писал про формулы, а я про скрипты.
У Рената в его канале @lemur_excel есть рубрики, например "хоткеи по понедельникам" и разные полезности для тех, кто работает с Excel.
Пожелаем Ренату удачи 👏
Друзья, мой соавтор по каналу Ренат Шагабутдинов решил сосредоточиться на своем проекте @lemur_excel, поэтому этот канал дальше буду вести только я, Евгений Намоконов.
Мы с Ренатом вместе написали книгу "Google Таблицы. Это просто. Функции и приемы"
Также мы вместе делали курс на Скиллбоксе и много лет вели этот канал бок о бок. Ренат больше писал про формулы, а я про скрипты.
У Рената в его канале @lemur_excel есть рубрики, например "хоткеи по понедельникам" и разные полезности для тех, кто работает с Excel.
Пожелаем Ренату удачи 👏
👍46❤29🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Курс "Скрипты и Формулы в Google Таблицах" от @google_sheets
Сколько угодно можем хвалить свой курс, но лучше нас говорят те, кто уже с нами учится и работает 😉
🎧 В этом посте прикрепим кружочек с отзывом от Валерия, а в комментариях соберем другие живые отзывы клиентов и участников курса.
Старт уже через неделю, успевай забронировать место заранее 🔥
Программа и все детали курса: https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе пиши мне: @namokonov
Сколько угодно можем хвалить свой курс, но лучше нас говорят те, кто уже с нами учится и работает 😉
🎧 В этом посте прикрепим кружочек с отзывом от Валерия, а в комментариях соберем другие живые отзывы клиентов и участников курса.
Старт уже через неделю, успевай забронировать место заранее 🔥
Программа и все детали курса: https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе пиши мне: @namokonov
❤5🔥3🍓1
Продолжаем рассказывать про наш курс из чужих уст :)
Ниже - отзыв Владислава! Он учился на прошлом потоке.
Текущий курс стартует через неделю.
Программа и все детали курса: https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе пиши мне: @namokonov
Ниже - отзыв Владислава! Он учился на прошлом потоке.
Текущий курс стартует через неделю.
Программа и все детали курса: https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе пиши мне: @namokonov
This media is not supported in your browser
VIEW IN TELEGRAM
Вводим 2,3,5 в ячейку и вторая, третья и пятая строки выделяются /УСЛОВНОЕ ФОРМАТИРОВАНИЕ
Друзья, показываем простой трюк.
Представьте, вы рассказываете про Таблицу коллегам в зуме и в процессе рассказа выделяете то одну, то другую строку через ввод номера, чтобы было нагляднее. Смотрите гифку.
Как это реализовать:
1) Строки, которые нужно выделить будем вводить в ячейку E2;
2) Выделяем диапазон данных, у нас это A:C;
3) Условное форматирование;
4) Добавить правило > форматирование формулой > вводим формулу:
Что делает формула УФ: делит ячейку с номерами строк по разделителю запятая с помощью SPLIT, получает массив номеров, далее ищет каждый номер строки в этом массиве с помощью MATCH, если находит - возвращается ИСТИНА и условное форматирование закрашивает эту строку.
Таблица с примером
---
Наш курс! https://shagabutdinov.ru/sheets-online
Друзья, показываем простой трюк.
Представьте, вы рассказываете про Таблицу коллегам в зуме и в процессе рассказа выделяете то одну, то другую строку через ввод номера, чтобы было нагляднее. Смотрите гифку.
Как это реализовать:
1) Строки, которые нужно выделить будем вводить в ячейку E2;
2) Выделяем диапазон данных, у нас это A:C;
3) Условное форматирование;
4) Добавить правило > форматирование формулой > вводим формулу:
=match(row($A1); split($E$2;",");0)
Что делает формула УФ: делит ячейку с номерами строк по разделителю запятая с помощью SPLIT, получает массив номеров, далее ищет каждый номер строки в этом массиве с помощью MATCH, если находит - возвращается ИСТИНА и условное форматирование закрашивает эту строку.
Таблица с примером
---
Наш курс! https://shagabutdinov.ru/sheets-online
🔥11👍6❤5
Media is too big
VIEW IN TELEGRAM
🔎 Как выделить все строки, где есть текст «конец дня» в Google Таблицах
Частый вопрос, который регулярно всплывает в работе с таблицами.
Записал короткое видео, как это сделать.
Кстати, уже во вторник стартует наш курс по формулам и скриптам в Google Таблицах
Там таких рабочих приемов десятки, от простых до продвинутых.
📘 Программа и все детали курса:
https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе
пиши мне в личку: @namokonov
Частый вопрос, который регулярно всплывает в работе с таблицами.
Записал короткое видео, как это сделать.
Кстати, уже во вторник стартует наш курс по формулам и скриптам в Google Таблицах
Там таких рабочих приемов десятки, от простых до продвинутых.
📘 Программа и все детали курса:
https://shagabutdinov.ru/sheets-online
❓ Любые вопросы по формату, оплате и программе
пиши мне в личку: @namokonov
👍6🔥5❤2
🚀 trimRange. Ускоряем обработку открытых диапазонов (пост от Алексея Одиссея)
Google Таблицы хорошо оптимизированы под формулы массивов. Поэтому мы часто используем открытые диапазоны вроде A:A или A:C, чтобы не задумываться, как будут разрастаться данные.
Но в реальных таблицах это может мешать. Когда в файле тысячи пустых строк "про запас", формулы с открытыми диапазонами начинают делать лишние вычисления и заметно замедляют работу.
🎯 Сегодня покажем приём, который помогает ускорить таблицы: обрезаем диапазон (или массив) до последней НЕпустой строки.
Мы будем обрезать диапазон (или массив) до последней НЕ пустой строки.
🌟Мы используем эту логику в большинстве рабочих кейсов и вынесли её в именованную функцию TRIMRANGE, чтобы Вы могли легко импортировать её.
❗️Пример таблицы
✅ Записывайтесь на курс "Скрипты и Формулы в Google Таблицах", где мы разбираем подобные кейсы 😉
Google Таблицы хорошо оптимизированы под формулы массивов. Поэтому мы часто используем открытые диапазоны вроде A:A или A:C, чтобы не задумываться, как будут разрастаться данные.
Но в реальных таблицах это может мешать. Когда в файле тысячи пустых строк "про запас", формулы с открытыми диапазонами начинают делать лишние вычисления и заметно замедляют работу.
🎯 Сегодня покажем приём, который помогает ускорить таблицы: обрезаем диапазон (или массив) до последней НЕпустой строки.
Мы будем обрезать диапазон (или массив) до последней НЕ пустой строки.
=ArrayFormula(LET(
ref; A:C;
lastRow; MAX(IFNA(byCol(ref; LAMBDA(col; MATCH({"zzz";1E+100}; col)))));
IFERROR(OFFSET(ref;;;lastRow); ARRAY_CONSTRAIN(ref; lastRow; COLUMNS(ref)))
))
❓КАК ЭТО РАБОТАЕТ смотри под катом ⤵️
💡MATCH({"zzz"; 1E+100}; col) - это "сердце" формулы.
Т.к. вся формула у нас обёрнута в ArrayFormula, то все функции в т.ч. и MATCH будут работать как формулы массива. Поэтому фактически, данная часть будет выполнена 2 раза:
1. MATCH("zzz"; col) - т.к. 3-й аргумент функции опущен, то по-умолчанию search_type = 1, т.е. MATCH ищет позицию наибольшего элемента в массиве col, который меньше (или равен) "zzz". Почему именно "zzz"? Это такой трюк! С точки зрения лексикографического анализа, "zzz" — это очень «большая» строка! Все слова, которые не начинаются на "zzz", будут лексикографически меньше.
2. MATCH(1E+100; col) - аналогично поиску текста выше, но на этот раз мы ищем числа. Чтобы найти любые числа, мы задаём очень большое число - 1 ГУГОЛ ! Поэтому если вы не занимаетесь космологией и теоретической физикой, то величины больше вряд ли встретятся у вас в таблицах. Для справки, число атомов во Вселенной оценивается как 10^80 ;)
💡byCol(ref; LAMBDA(col; MATCH(...)) - в этой части мы проходимся по каждому столбцу диапазона(или массива) ref и находим наибольшие позиции
💡lastRow; MAX(IFNA(byCol(...))); - т.к. в наших данных не всегда есть И текст И числа, подавляем ошибки #N/A, а затем находим наибольшее число по всем столбцам. Результат обозначаем как lastRow в рамкам адресного пространства имен функции LET
💡OFFSET(ref;;;lastRow) - здесь мы указываем наш диапазон и 4-й аргумент, высоту возвращаемого диапазона, фактически обрезая его.
💡 IFERROR(OFFSET(...); ARRAY_CONSTRAIN(ref; lastRow; COLUMNS(ref)))
На случай, если ref является массивом, а не диапазоном, а такое возможно, например, если он получен в результате каких-то действий на предыдущих шагах в рамках функции LET, OFFSET(...) выдаст ошибку, и будет выполнена функция во втором аргументе IFERROR - ARRAY_CONSTRAIN. Эта функция как раз и сократит массив до вычисленной строки lastRow.
🌟Мы используем эту логику в большинстве рабочих кейсов и вынесли её в именованную функцию TRIMRANGE, чтобы Вы могли легко импортировать её.
❗️Пример таблицы
✅ Записывайтесь на курс "Скрипты и Формулы в Google Таблицах", где мы разбираем подобные кейсы 😉
🔥12❤6