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

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

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

РКН: clck.ru/3F3u9M
Download Telegram
Google Таблицы
Telegram бот, который записывает всё, что видит в Google Таблицу Вам потребуется 15 минут времени, чтобы создать такого бота самостоятельно. В статье на медиуме – полная инструкция, справятся даже новички. 📣 Наш чат: @google_spreadsheets_chat
Media is too big
VIEW IN TELEGRAM
UPDATE к Telegram боту

— теперь бот умеет сохранять файлы, которые отправлены в чат на ваш Google Диск (quick view - тоже)
— ссылка на сохраненный файл попадёт в Таблицу
— подпись к файлам сохранится тоже

Статья (разворачиваем бота с 0 за 15 минут)
Таблица с кодом бота (кто развернул предыдущую версию – просто обновите страницы скрипта doPost и download и опубликуйте приложение под новой версией, регистрировать вебхук заново не нужно)

---
📕📗📘 Оглавление канала (в Google Таблице)
This media is not supported in your browser
VIEW IN TELEGRAM
Переключение дэшборда между днями и неделями — с помощью функции SEQUENCE

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

И при этом хотите легко переключать режим “недели / дни" (или изменение любого другого параметра), не залезая в формулы.

В статье разбираем, как построить такой отчёт

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

---
📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
Очень простой летний скрипт

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

Работает он так:
1. заполняете лист "настройки": вносите название листа шаблона, а также названия листов, которые нужно создать
2. запускаете скрипт :)

Код скрипта:
function myFunction() {
const ss = SpreadsheetApp.getActive()
sheet1 = ss.getSheetByName('настройки'),
data = sheet1.getDataRange().getValues(),
sheet0 = ss.getSheetByName(data[0][0]);

for(let x = 1; x < data.length; x++){
const sheet_name = data[x][0];

if(!ss.getSheetByName(data[sheet_name])){
sheet0.copyTo(ss).setName(sheet_name);

}
}
}


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

---
📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
Табличные диалоговые окна. Подсказки ввода dadata.ru

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

Статья с примерами кода

---
📕📗📘 Оглавление канала
👍2
Превратим 1 час, 2 мин, 22 сек в 1:02:22

Друзья, знаем, что вам нравятся такие формулы.

На входе у нас есть текстовые строки:

2 мин, 54 сек
11 мин, 37 сек
4 мин, 18 сек


Превратим эти строки в правильное время Google Таблиц:

1) С помощью трёх REGEXEXTRACT извлекаем из строк часы, минуты и секунды отдельно;
2) Добавляем IFNA, функция вернет 0, если какого-то показателя не будет;
3) Добавляем то, что получилось в функцию TIME(часы; минуты; секунды);

Формула целиком:
=TIME(
IFNA(REGEXEXTRACT(B4;"(\d+) ч.*");0);
IFNA(REGEXEXTRACT(B4;"(\d+) мин");0);
IFNA(REGEXEXTRACT(B4;"(\d+) сек");0))


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

---
📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
Превратим 10.62 руб. в правильное число

У нас есть текстовые строки:

10.62 руб.
8.85 руб.
0руб.

Превратим их в числа:

1) с помощью SUBSTITUTE(B3 ; "руб." ; "") заменяем все "руб" на ничего
2) с помощью SUBSTITUTE(... ; "." ; ",") заменяем точку на запятую
3) используя TRIM убираем пробелы, если они есть
4) и с помощью VALUE превращаем то, что получилось в число

Формула целиком:
=VALUE( TRIM( SUBSTITUTE( SUBSTITUTE(B3 ; "руб." ; "") ; "." ; ",")))

Другой вариант (регулярка):
=VALUE(
REGEXREPLACE(C3;"(\d+)\.?(\d+)?.*";"$1,$2"))

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

---
📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
Тормозит таблица?

Узнаём, какие в Таблице формулы и на каких они листах.

Простой скрипт для вас:
1) вводите в ячейку B2 ссылку на Таблицу,
2) нажимаете на выходца из убежища
=) скрипт соберет все формулы на всех листах и вставит их на лист

Так вы сможете увидеть лишние и тяжелые формулы и их оптимизировать. Что такое тяжелые формулы? Например, не советуем использовать QUERY вместо SUMIFS для каждой ячейки. Не стоит делать запасы из десятков тысяч протянутых впрок формул.

Таблица со скриптом (делайте копию, чтобы сохранить её себе и запускать скрипты)

Код отдельно: https://pastebin.com/pgjCpRiF

---
📕📗📘 Оглавление канала
1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Функция CHAR (СИМВОЛ) и генератор случайных кодов

Друзья, в статье рассказываем про функцию CHAR, выводим 20 000 разных символов с помощью SEQUENCE и создаем генератор случайных кодов.

Статья про генератор
(с Таблицей с формулами и скриптом)

---
📕📗📘 Оглавление канала
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Народный Telegram бот
❗️ Отправляем сообщения прямо из Таблицы

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

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

Итого, сейчас бот умеет:
– сохранять в Таблицу все сообщения, которые пишут ему и которые пишут в чаты, в которых он есть
– сохранять все файлы / фото на Google Диск
– отправлять сообщения из Таблицы

Как вы можете использовать новый функционал? К примеру – берём показатель из ячейки, добавляем к нему текст и рассылаем каждое утро всем заинтересованным людям, поставив скрипт в расписание.

Статья с инструкцией по установке

Таблица с ботом

Видео с полной установкой

---
📕📗📘 Оглавление канала (в Google Таблице)
👍9🔥5
ВПР, достаём последнее значение по ключу

Функция =VLOOKUP("Вася";$A$3:$B$7;2;0) вернёт 100 – первое найденное значение из диапазона поиска по ключу "Вася".

Что делать, если мы хотим последнее значение по нашему ключу – 300?

1) Отсортируйте таблицу поиска по строкам по убыванию
2) Вставьте результат в диапазон ВПР

После этого последние строки станут первыми и функция начнет возвращать их.

Магия в том, что всё можно сделать внутри одной формулы:
=VLOOKUP("Вася"; sort(A3:B7; row(B3:B7); false) ;2;0)

P. S. а тут про левосторонний ВПР, с помощью него можно вернуть столбцы, которые расположены ДО ключа
В Excel 365 появилась чудесная функция ПРОСМОТРX / XLOOKUP — хороший апгрейд стандартного ВПР, не страдающий зависимостью от расположения столбцов в исходном диапазоне данных. И хоть мы не про Excel, но уверены, что вам будет полезно про нее знать.

И нечего грустить по поводу ее отсутствия в Таблицах - благодаря магии работы с массивами мы можем сделать собственный апгрейд ВПР'а, который будет работать при любом расположении столбцов.

В посте смотрим на ПРОСМОТРX, ее синтаксис и возможности, а также вспоминаем, как заменить ее в Google Таблицах с помощью пересборки исходной таблицы прямо внутри функции.

---
📕📗📘 Оглавление канала (в Google Таблице)
👍1
Зачем Таблицы в школе?

Людмила работает школьным психологом в украинской школе. Мы попросили ее рассказать, зачем ей в школе Google Таблицы: https://telegra.ph/Prichem-tut-tablicy-Google-07-20
Помогаем маме: Google Таблица для отправки посылок Amazon и Ebay

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

Антон создал решение для отправки и по нашей просьбе рассказал о нём в статье на медиум
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
ЗАМЕНЯТОР: замена значений из словаря на другие в выбранных Таблицах

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

Краткая инструкция:
1) делайте копию Таблицы со скриптом, чтобы унести её к себе на диск
2) заполняйте словарь (значения, которые мы ищем и значения, на которые мы будет их заменять) и вносите ссылку на Таблицу со словарём и название листа в ячейки a3, b3
3) в диапазоне a5:c укажите таблицы, листы и диапазоны, в которых требуется произвести замену
4) в диапазоне d5:d отметьте чекбоксами те строки, которые требуется обработать сейчас
5) и запустите скрипт нажатием на кнопку

==
Скрипт создан при поддержке lesollp.ru, спасибо им,

а еще мы пишем любые скрипты, создаём телеграм ботов на заказ (тыц)

📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
ЗАКРЫВАТОР: скрипт автоматического закрытия прошедших дней

Нерадивые сотрудники заходят в старые сделки и меняют контрагента или сумму случайно? Или специально, пытаясь запутать вас и выгадать что-то для себя? 🐽

Мы создали скрипт, который поможет в таких случаях.

Работает он так – с помощью функции findRow находим номер последней строки со вчерашней датой, далее с помощью delProtection удаляем защищенный диапазон, далее с помощью createProtection создаём диапазон начиная со второй строки листа и по последнюю строку со вчерашней датой.

Таблица со скриптом здесь, код отдельно здесь, чтобы все работало у вас – уносите код к себе в Таблицу и заполните 4, 5, 6, 11 строку в редакторе скриптов: это название рабочего листа, емейлы, которые добавляем в закрытый диапазон, название защищенного диапазона и номер колонки с датой на вашем листе.

==
Разработка Таблиц, скриптов и ботов (от 10к рублей)

📕📗📘 Оглавление канала
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
ДОПУСКАТОР: изменяем права доступа к выбранным файлам и папкам на Google Диске

Хотите добавить к пятидесяти рабочим файлам нового сотрудника как редактора или оперативно убрать сотрудника, который не прошёл испытательный срок и вообще не подходит по духу и грозится все удалить?

Сегодняшнее решение (тут) поможет вам с этим разобраться.

Советы и правила:
– Скрипт работает и с файлами и с папками
– Можно указывать как URL, так и ID файла или папки
– Если даёте доступ к папке, то он распространится на вложенные в папку папки и файлы
– После обработки всей строки скрипт добавит дату и время в столбец E, при следующем запуске скрипт начнёт с первой строки БЕЗ даты и времени (это сделано для того, чтобы обрабатывать много файлов)

Поэтому, если нужно обработать строку – очистите
столбец E
– Чтобы добавлять / удалять сотрудников вы должны быть по крайней мере редактором

===
а еще уменьшаем время, которое вы тратите на рутину (скрипты, боты и отчёты на заказ)

📕📗📘 Оглавление канала
🔥1
QUERY по дате, представленной в виде текста

Допустим, у вас есть столбец с текстовыми строками, содержащими даты (в виде 05.06.2020, далее до 15.06.2025 или чего-то подобного)

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

Итак, вам нужно доставать все строки, в которых встречается дата за определенный месяц и год (числа любые).
Будем вводить в ячейке A1 дату, а извлекать из нее текстовую строку вида "MM.ГГГГ" будем следующей конструкцией:

ТЕКСТ(МЕСЯЦ(A1);"00" )&"." &ГОД(A1)

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

=QUERY(диапазон_с_данными;"select * WHERE G contains '"&ТЕКСТ(МЕСЯЦ(A1);"00")&"."&ГОД(A1)&"'";1)

Таблица с примером
👍2
Media is too big
VIEW IN TELEGRAM
ДОСТАВАТОР: берём из кода веб-страниц регуляркой нужное

Представьте – вам нужно зайти на 200 однотипных веб-страниц и достать из них адрес объекта или как в нашем примере – ссылку на изображение.

Так себе перспектива, да?

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

Как всё работает:
0) копируйте Таблицу
1) заполните столбец A: ссылки, которые надо обработать
2) заполните столбец B: регулярное выражение, которое извлечет из кода веб-страницы нужное
3) запускайте!

Скрипт проходит строки по одной, вставляя данные и включая чекбокс, обрабатываются только строки с выключенным чекбоксом.

Про регулярку:
Ссылка, которую достаём, в коде страницы выглядит так:
data-large="/upload/d5/b4/19/37/d.jpeg" class="my-foto">

Нам нужно всё, что после data-large=" и до "

Регулярка будет такой:
data-large="(.+?)"


regex101.com/ – проверить выражение
rexegg.com/regex-tools.html – научиться

💊💡(скрипты, боты и отчёты на заказ)
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ
Выводим все листы Таблицы и диапазоны с данными

/**
* Выводим листы и диапазоны
* @customfunction
*/
function листы_диапазоны() {

return

[['Лист', 'Диапазон с данными', 'Границы листа']].concat(SpreadsheetApp.getActive().getSheets()
.map(g => [g.getName(), g.getDataRange().getA1Notation(), g.getRange(1, 1, g.getMaxRows(), g.getMaxColumns()).getA1Notation()]))
}


Как работает? Положите код функции в редактор скриптов Таблицы, после введите в ячейку название функции листы_диапазоны.

Для принудительного обновления – оберните название функции в ЕСЛИ (IF) и добавьте ссылку на чекбокс. Активируете чекбокс – функция пересчитается.
=IF(A1; листы_диапазоны())

🔥Другие функции из гифки:
– выводим имя книги
– текущий лист и ссылка на него
– все листы книги и ссылки на них
https://pastebin.com/8Rr3fgZc

===
📕📗📘 Оглавление канала
This media is not supported in your browser
VIEW IN TELEGRAM
УДАЛЯТОР / ДОБАВЛЯТОР
Следим за количеством пустых строк в выбранных Таблицах


Тормозит Таблица, а вы боитесь лезть в формулы и что-то оптимизировать?

Есть способ проще - физически удаляем пустые ячейки. Это поможет, ведь даже пустые ячейки имеют вес и при пересчёте формул на них требуется время.

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

Работает так:
1. заносите ссылки на Таблицы
2. по каждой Таблице указываете, сколько пустых строк / столбцов должно остаться
3. запускаете скрипт, скрипт открывает каждый лист каждой таблицы
4. удаляет столбцы и строки, учитывая запас, который вы задали
5. если потребуется – то добавляет строки / столбцы до запаса

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

===
📕📗📘 Оглавление канала