Google Таблицы
58.3K subscribers
425 photos
121 videos
4 files
772 links
Работа в Google Таблицах. Кейсы, решения и угар.

контакты:
@namokonov
@r_shagabutdinov
@IT_sAdmin

оглавление: goo.gl/HdS2qn
заказ работы: teletype.in/@google_sheets/sheet_happens
чат: @google_spreadsheets_chat
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Кликаем на и защищаем от редактирования строку от всех, кроме владельца Таблицы

Мы подготовили простой скрипт, который это умеет.

Чтобы скрипт работал и строки закрывались:
— вставляйте код в редактор скриптов вашей Таблицы (расширения > apps script)
— в редакторе скриптов создайте триггер на редактирование таблицы (триггеры > добавление триггера > при редактирование > функция goClose).

Если вы создадите триггер от владельца Таблицы, то строка будет закрываться даже от того, кто поставит чекбокс. Разумеется, если владелец Таблицы не он :)

Для нескольких человек, которые пытаются разобраться в скриптах с 0 мы прокомментировали каждую строку кода: pastebin.com/gy6LBS60

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

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

⭐️ Наш чат: t.me/google_spreadsheets_chat
⭐️ Оглавление нашего канала, в котором множество других скриптов: goo.gl/HdS2qn
⭐️ Стать патроном нашего канала
Google Таблицы
Кликаем на и защищаем от редактирования строку от всех, кроме владельца Таблицы Мы подготовили простой скрипт, который это умеет. Чтобы скрипт работал и строки закрывались: — вставляйте код в редактор скриптов вашей Таблицы (расширения > apps script)…
This media is not supported in your browser
VIEW IN TELEGRAM
Закрываем от редактирования столбцы по чекбоксу ()

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

А можно такое же, но для столбцов?

Можно! На ГИФКЕ показали, как этот скрипт будет работать, а ниже – ссылка на сам код с комментариями по каждой строке для тех, кто хочет научиться писать скрипты самостоятельно.

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


Cкрипты с максимальными комментариями по каждой строке:
Закрываем столбец по чекбоксу: pastebin.com/BH5mnD8d

Закрываем строку по чекбоксу:
pastebin.com/gy6LBS60

⭐️ Стать патроном нашего канала
⭐️ Наш чат: t.me/google_spreadsheets_chat
⭐️ Оглавление нашего канала, в котором множество других скриптов: goo.gl/HdS2qn
This media is not supported in your browser
VIEW IN TELEGRAM
Активируем чекбокс ✔️ — создаем защиту строки, снимаем 🔘 — защита удаляется

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

Итак, еще один, уже третий скрипт. Чтобы скрипт заработал – вставьте код в свою Таблицу, заполняете переменные и ставьте скрипт на триггер редактирования Таблицы (триггер должен создать владелец Таблицы).

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

Cкрипты с комментариями по каждой строке
Текущий, создаем / удаляем защиту строки: pastebin.com/kVzm7BpX

Закрываем столбец по чекбоксу: pastebin.com/BH5mnD8d

Закрываем строку по чекбоксу:
pastebin.com/gy6LBS60

⭐️ Стать патроном нашего канала
⭐️ Оглавление нашего канала: goo.gl/HdS2qn
Несколько советов для работы в браузере Google Chrome

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

Пишите в комментариях свои лайфхаки - добавим в пост!
Forwarded from Eugeny
Случайный подбор и перестановка
– памятка от Михаила Смирнова

1) Выбор случайного значения из списка
2) Выбор k-случайных значений из списка с повторениями
3) Выбор k-случайных значений из списка без повторений
4) Случайная перестановка списка

Таблица c примерами от Михаила

Функции для генерации случайных чисел волатильные, то есть пересчитываются при любых изменениях. Поэтому результаты вычисления формул с ними пересчитываются. Если вам нужно их зафиксировать — скопируйте и вставьте как значения (Ctrl+Shift+V).

⭐️ Стать патроном нашего канала
⭐️ Оглавление нашего канала: goo.gl/HdS2qn
Рубрика "Это не помешало бы нам в Таблицах"

В Excel есть два приема для обработки нескольких листов в формулах. Надеемся, что когда-нибудь они доберутся и до Таблиц :)

Первый аспект известен многим - возможность ссылаться на несколько листов через двоеточие. Следующая формула суммирует числа из ячеек A1 на листах от Москвы и до Саратова включительно:
=СУММ('Москва:Саратов'!A1)

"От и до" значит, что эти листы (их ярлыки) идут слева направо в книге. Если какой-то из них переместится за пределы этого набора листов - ячейка с него перестанет вычисляться. И наоборот, если после Москвы или до Саратова появится новый лист - он попадет в вычисление.

А второй аспект - возможность применять символ подстановки * в ссылках на листы.
Допустим, у вас в книге много листов со словом "Расходы" в названии ("Расходы январь", "Расходы февраль", ... ). Следующая формула позволит просуммировать ячейки A1 со всех этих листов:
=СУММ('Расходы*'!A1)

Правда, в отличие от ссылки с двоеточием, звездочка в формуле не сохранится - после ввода такой формулы ссылка на лист со звездочкой превратится в формулу с отдельными ссылками:
=СУММ('Расходы январь'!A1;'Расходы февраль'!A1;'Расходы март'!A1;...)
Но все же!

---
⭐️ Наш курс по Excel, Таблицам и скриптам: тыц
⭐️ Оглавление канала: ты-дыц
⭐️ Самый табличный чат на свете: бадабум
⭐️ Стать патроном нашего канала
Сегодня напоминаем про отличный материал Михаила Смирнова — с помощью скрипта даём доступ к другой Таблице, чтобы IMPORTRANGE заработал сразу.

Статья: telegra.ph/Programmno-dayom-dostup-dlya-IMPORTRANGE-k-drugoj-tablice-07-25

Скрипт из статьи (даём доступ к трём таблицам): pastebin.com/WfgqTEKD
Флаг вам в руки — суммируйте что хотите. SUMIFS с флажком

Задача: вставить в таблицу флажок, который будет включать или отключать один из критериев функции СУММЕСЛИМН / SUMIFS (ну или ее аналогов для подсчета/усреднения COUNTIFS, AVERAGEIFS, COUNTUNIQUEIFS).

Вставляем флажок и добавляем функцию IF / ЕСЛИ, которая в соответствующем аргументе будет возвращать условие, если флажок включен, и “*”, если флажок выключен. Так как звездочка — символ подстановки (wildcard), соответствующий любому тексту, то одна звездочка = любое значение = отсутствие всякого условия для соответствующего столбца.

=SUMIFS(F:F;B:B;IF(I4;J4;"*"))

Если в ячейке с условием не будет точного значения (например, полученное с помощью выпадающего списка благодаря проверке данных и тем самым гарантированно совпадающее со значениями из диапазона), то можно добавить звездочки слева и справа от условия — чтобы искать только по слову/символам, а не точному совпадению.
=SUMIFS(F:F;B:B;IF(I4;"*"&J4&"*";"*"))

Понятное дело, таким образом и несколько флажков можно сделать для разных критериев — как в примере по ссылке (создать копию).

P.S. Благодарим функцию RANDBETWEEN / СЛУЧМЕЖДУ за предоставленные (сгенерированные случайно) данные

---
⭐️ Наш курс по Excel, Таблицам и скриптам: тыц
⭐️ Оглавление канала: ты-дыц
⭐️ Самый табличный чат на свете: бадабум
⭐️ Стать патроном нашего канала
Ночью закрываем Таблицу от редактирования, а днем возвращаем редакторам их права. Скриптами.

Недавно в одном из чатов я увидел вот такой вопрос. Попробуем ответить на него и ответить так, чтобы вы смогли разобраться в коде, который мы для вас написали :)

Мы написали для вас скрипт и прокомментировали в нем каждую строку с кодом: pastebin.com/fACHx817

Внутри три функции:

from_edit_to_view — меняем права всех редакторов документа (кроме себя) с редактирования на просмотр;

from_view_to_edit — меняем права всех пользователей с просмотром на редактирование;

main — главная функция, определяет текущее время и запускает или первую или вторую функции;

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

---
⭐️ Наш курс по Excel, Таблицам и скриптам: тыц
⭐️ Оглавление канала: ты-дыц
⭐️ Самый табличный чат на свете: бадабум
ЗАЩИЩАЕМ СКРИПТЫ ОТ РЕДАКТИРОВАНИЯ

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

Рассказываем Александру и другим как защитить свои скрипты от редактирования.

Способ первый – библиотека

Уносим скрипты в библиотеку, открываем библиотеку для всех на просмотр, подключаем библиотеку к Таблице и оставляем в редакторе скриптов Таблицы только функцию для вызова функции из библиотеки:

function something(){
lib.something();
}


Что такое библиотеки и как с ними работать отлично написал Миша Смирнов: t.me/google_sheets/828

Способ второй - "inject", подходит для скриптов, которые можно положить на триггер

Создаем в Таблице из другой Таблицы скрипт и триггер на него, который не увидят владельцы первой Таблицы вообще: t.me/google_sheets/753

Способ третий - развернутое приложение

1) переносим скрипты в другую таблицу / другой отдельный скрипт;
2) пишем там doGet функцию, которая будет принимать на вход название скрипта, разные аргументы, сами скрипты убираем в объект (смотрите в примере кода);
3) разворачиваем всё это как приложение, получаем ссылку приложения;
4) пишем функции в таблице, в которой вы хотите запускать скрипты, функции должны будут отправлять на адрес вашего приложения (пункт 3) названия скрипта, который надо запустить, а также аргументы, которые в этот скрипт надо передать (смотрите в примере кода, мы отправляем ключ и id таблицы);
5) всё! пользователь в Таблицы выбирает в меню своей Таблицы пункт, маленькая функция в Таблице отравляет на адрес развернутого приложения имя функции, которую нужно запустить и параметры. Далее приложение от имени того, кто его развернул запускает требуемый скрипт с переданными в него параметрами;

Примерный код: pastebin.com/TnBazuut

---
⭐️ Наш курс по Excel, Таблицам и скриптам: тыц
⭐️ Оглавление канала: ты-дыц
⭐️ Самый табличный чат на свете: бадабум
Рубрика “Чего нам не хватало в Excel”

Теперь в Excel — увы, только у подписчиков Microsoft 365 — появился аналог GOOGLEFINANCE.
Функция называется STOCKHISTORY / ИСТОРИЯАКЦИЙ.

Аргументы:
stock / акции — это тикер (например, "GOOG") или коды валютной пары (например, "USDRUB" или "BTCRUB"). В кавычках или в виде ссылки на ячейку с текстом.
start_date и end_date / нач_дата и кон_дата — период, за который загружаем данные.
interval / интервал — периодичность. 0 = ежедневно(по умолчанию), 1 = еженедельно, 2 = ежемесячно.
headers / заголовки — по умолчанию 1 (1 строка с заголовками, дата и название параметра), еще есть варианты 0 — без заголовков и 2 — две строки, где первой будет название тикера / валютной пары.
свойства1; свойства2;…; свойства5 — с помощью этих аргументов мы набираем те параметры, которые будут возвращаться, в желаемом порядке. Вот набор параметров:
0 — Дата
1 — Закрытие (Close)
2 — Открытие (Open)
3 — Высокая (High)
4 — Низкая (Low)
5 — Объем (Volume)

Например, в следующем случае будeт выводиться дата (0), объем (5) и цена закрытия (1):
=ИСТОРИЯАКЦИЙ("GOOG";...;0;5;1)
По умолчанию будут дата и цена закрытия.

Функция будет возвращать динамический массив. Если ей не хватит места для возвращения результата — будет ошибка #SPILL! / #ПЕРЕНОС!

Подробнее про источники данных для функции

---
⭐️ Наш курс по Excel, Таблицам и скриптам: тыц
⭐️ Оглавление канала: ты-дыц
⭐️ Самый табличный чат на свете: бадабум
Друзья, повторяем нашу подборку полезных постов:
Forwarded from Google Таблицы
Друзья, ниже мы отобрали для вас избранные посты нашего канала:

Функции:
​​— Учимся извлекать из текста нужное. База знаний регулярных выражений для REGEXEXTRACT
— Памятка по синтаксису QUERY / FILTER / SUMIFS
— Функция FILTER. Список условий выбираем диапазоном прямо с листа
— Обоюдоострый FILTER. Убираем с помощью одной формулой из таблицы пустые строки и столбцы
— SUMIF для нескольких условий в формуле массива
— Формулой достаем изображения из поисковой выдачи Яндекса
​​— ЛЕВЫЙ ВПР (когда искомое значение не в первом столбце)
— ВПР в массиве вместо тысячи CУММЕСЛИМН (заполняем весь лист одной формулой)
— Автоматически создаем фразы по определенным шаблонам в Google Таблицах
— Пользовательские числовые форматы, добавляем к числам 🔥🔥🔥

Скрипты:
— Скрипт. Распознаем текст на изображениях. OCR в Google Docs
— Простой скрипт копирования / фильтрации (поможет, когда IMPORTRANGE перестает работать)
— Скрипт onEdit(), реагирующий на изменения и отправляющий письма (или триггер в триггере)
— Скрипт, загружаем письма вашего GMAIL-аккаунта в Таблицу
— Скрипт, отправляем письма на электропочты из диапазона, который вы выделяете
— Простой скрипт для ежедневной рассылки из Google Таблицы
— Важный скрипт. Связанные выпадающие списки из кэша

Проекты:
— Telegram bot + Google Sheets (используя вебхуки)
— Эмоджи форматирование выполнения плана (IMAGE, IFS)
— Создаем красивое расписание групповых занятий
— Создание оглавления в телеграм-канале: как автоматически загружать и сортировать публикации из вашего рабочего файла
— Google Форма + Google Таблица для проведения тестирования
— Применение IFTTT для отправки сообщений с данными из Таблиц
— Googlefinance, Парето и графики (#готовое решение)
— Создаем инфографику с помощью IMAGE. Размер картинок пропорционален значениям
— Импортируем таблицу из веб-страницы и оставляем только нужные нам столбцы (IMPORTHTML+QUERY)

Для новичков:
— Мы на Хабре: "Функции Таблиц, которых нет в Excel": https://habrahabr.ru/post/331360/
— Советы по оптимизации Таблиц
— Видеоурок по функции IMPORTRANGE (для связывания нескольких таблиц)
— Видеоурок по фильтрам и режиму фильтрации
— Про виды доступа к документам
— Совместная работа с фильтрами

Полное оглавление нашего канала: https://goo-gl.ru/5Kc3
Наш чат: @google_spreadsheets_chat
На заметку: нажатие на кнопку Download / Скачать в контекстном меню по щелчку на папке Google Диска создаёт ZIP-архив с файлами (при этом файлы редакторов Google будут преобразованы в форматы Microsoft Office, например, Google Таблицы в XLSX) и скачивает его на ваш компьютер.

А вот здесь мы писали о скрипте, с помощью которого можно сохранить лист Таблицы в выбранном формате (PDF / CSV / XLSX).
Задавайте вопросы!

Если у вас есть вопросы по Таблицам – вы их можете задать через форму.

Формулируйте вопрос, прикладывайте ссылку на Таблицу, открытую на просмотр и напишите свой ник в Телеграм.

На самые интересные вопросы будем отвечать в чате и на канале.

Задать вопрос: docs.google.com/forms/d/1QLVp4CM8mMsT3ZwkDlpdjbr5B20tCMWU2l7DjA5BlcQ/edit
Как сделать бекап Google Диска

1. Самый простой и правильный способ забекапить данные
https://takeout.google.com/

2. А также – нажатие на кнопку Download / Скачать в контекстном меню по щелчку на папке Google Диска создаёт ZIP-архив с файлами (при этом файлы редакторов Google будут преобразованы в форматы Microsoft Office, например, Google Таблицы в XLSX) и скачивает его на ваш компьютер.

3. А еще – вот здесь мы писали о скрипте, с помощью которого можно сохранить лист Таблицы в выбранном формате (PDF / CSV / XLSX).
Media is too big
VIEW IN TELEGRAM
Регулярный бэкап Таблиц в формате XLSX в телеграм!

Друзья, недавно сделали решение для нашего клиента и с его разрешения делимся с вами. Спасибо, Равиль!

Умная Таблица работает так:

1) вставляете ссылки на Таблицы, бэкап которых вы хотите сделать, в столбец A:A
2) далее открываете редактор скриптов и заполняете:
— chatId – чат, в который будут отправляться бэкапы Таблицы, чат может быть как личным, так и общественным, чтобы узнать chatId - используйте @myidbot в телеграм
— botToken - токен бота, который будет отправлять таблицы, чтобы зарегистрировать бота и получить его токен - используйте @botfather
— hours - часы отправки через запятую
— далее запускаете из меню 🐞 скрипт "создать триггер на каждые 15 минут"

Все, после этого наша функция каждые 15 минут запускается и проверяет, есть ли Таблицы, которые нужно обработать в этот час и которые еще не были обработаны, если есть - скрипт открывает Таблицу, превращает в XLSX и отправляет файл в выбранный чат, как на гифке.

Таблица и скрипт
Разбираем ваши вопросы, пришедшие на форму.

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

Как настроить изменение правила проверки данных (значение из диапазона) на основе вводимой информации в соседней строке.
Используйте скрипт "связанные списки из кэша" - вот ссылка.

Какую функцию использовать для изменении в колонке «Продажа».
При продаже цена должна подтягиваться с таблицы «прихода», а если была переоценка, то тогда цена берётся с таблицы «переоценка»
Раз в вопросе (если мы его верно поняли) есть слово ЕСЛИ (IF), то и в формуле оно может пригодиться. Можно ВПР-ить (VLOOKUP'ить) переоценку, и если ВПР выдаст пустоту, то ВПР-ить уже таблицу с приходом.
Можно функцией МАКС брать максимальное значение из двух ВПР, если переоценка всегда в большую сторону (но давайте не будем о грустном, о росте цен).
Так или иначе, варианты по ссылке.

Имеется таблица в которой строки повторяются но отличаются только по одному значению. Необходимо удалить все повторяющиеся строки, при это оставить уникальные строки в которых одна ячейка больше всех среди повторяющихся. Как это сделать? Заранее спасибо!

Если правильно поняли вас и одна ячейка больше = та ячейка, где больше текстовых пунктов, начинающихся на "-" (дефис), то можно подсчитать количество пунктов через COLUMNS(SPLIT("-";...)). Можно и по количеству переносов строки SPLIT(CHAR(10);...)

А потом отсортировать по этому столбцу SORT и оставить уникальные UNIQUE.
Пример тут.

Как правильно импортировать с Листа1 в ячейку "успешные" по сервису? буду очень благодарен!
Ничего не поняли наверняка, но похоже, что нужна функция FILTER - по названию продукта. Если имен будет несколько, в одну текстовую строку результат FILTER можно склеить с помощью TEXTJOIN.

На iOS ссылки на определенные листы в книге работают не так, как ожидалось. С ПК при нажатии на гиперссылку открывается соответствующий лист. С телефона - открывается первая страница в книге.
Эх 😞