Таблицы и Скрипты Гугл для бизнеса и анализа🤘🏻
3.37K subscribers
212 photos
70 videos
1 file
271 links
Решение реальных задач в Таблицах Гугл. Кейсы, хитрости, приёмы и их практическое применение в бизнесе.

Учебник по Гугл Таблицам для новичков https://t.iss.one/GoogleSheets_ru/120

Реклама, заказать проект, консультацию: @GoogleSheets_ru_cm
Download Telegram
Есть задача: В смету должны попадать столбцы внутренней таблицы: A, B, C, D, E, F, G, H, J, M, N, O, P, S, T, U, V, W

При этом дано: Таблица-источник

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

Как вывести заголовки, опираясь на буквы столбцов?

В приложении решение и приглашение поразмять мозги - может быть найдется другой интересный вариант?

Наш канал и чат про Таблицы
👍81🔥1🥱1
🔄 🧿 Важное обновление: Изменения в API Ozon для получения информации о товарах

Привет, друзья!

Ozon обновил свой API для получения информации о товарах, и мы оперативно (ну почти) адаптировали (на самом деле, это hotfix) нашу библиотеку под эти изменения. Если вы используете наш код для загрузки товаров из Ozon в Google Таблицы, этот пост для вас!

❗️ Что произошло:
• Ozon изменил структуру API для получения данных о товарах
• Это вызвало ошибки при попытке загрузить информацию в таблицы
• Мы выпустили обновление библиотеки, которое решает проблему

Что нужно сделать:
1. Откройте редактор скриптов вашей Google Таблицы
2. В левом меню найдите "Библиотеки"
3. Найдите нашу библиотеку в списке
4. Измените версию библиотеки на 6
5. Сохраните изменения
6. Готово!

На всякий случай:
Инструкция по работе с редактором скриптов
Подробнее про библиотеки
Обучающая статья по интеграции с Ozon

📝 Что изменилось в данных:
Обновленный API предоставляет расширенную информацию о товарах, включая:
• Информацию о комиссиях
• Данные об уценённых товарах
• Расширенные настройки видимости
• Ценовые индексы
• Дополнительные статусы товаров

💡 После обновления проверьте корректность загрузки данных в вашу таблицу. Если появятся новые проблемы, о которых мы еще не знаем - пишите в комментариях.

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

Раздел: #обновления #API #решения

Хотите узнать больше? Присоединяйтесь к нашему сообществу!
💬 Чат
📢 Канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9🙏5
Доброе утро! Ловите обновление!

🟢Актуальная версия библиотеки: 12
🟢Новая версия Таблицы для получения товаров из Озон здесь
🟢Код открытый, стать соучастником можно здесь: https://github.com/googlesheets-ru/OzonFromGAS

Обратите внимание на существенные изменения в наборе данных, которые возвращает Озон
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🎉1🙏1
🔒 Защита данных по условию: автоматическая блокировка строк в Google Таблицах

Привет, автоматизаторы! Недавно в нашем чате возник интересный вопрос о защите данных. Сегодня поделимся решением от одного из подписчиков, который разработал удобный скрипт для автоматической защиты строк при изменении статуса!

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

Автоматическая защита данных позволяет:
1. Предотвратить случайное изменение важной информации
2. Сохранить целостность подтвержденных записей
3. Избавиться от ручной настройки защиты для каждой строки
4. Гибко контролировать, какие столбцы защищать, а какие оставить доступными

🤓 Как это работает:
В скрипте отслеживается изменения в столбце K (Подтверждено?). Когда там появляется значение "Подтверждено", автоматически защищаются ячейки от A до J в этой строке. Если статус меняется на другой — защита снимается.

👩‍💻🧑‍💻 Скрипт от нашего подписчика:👩‍💻

function onEdit(e) {
// Проверяем, что объект события существует
if (!e || !e.source || !e.range) {
return;
}

const sheet = e.source.getActiveSheet();
const range = e.range;
const row = range.getRow();
const column = range.getColumn();
const value = e.value;

// Указываем столбец, до которого нужно защищать строку
const endColumn = 10; // Защищаем до столбца J

// Проверяем, что изменение произошло в нужном столбце (K)
if (column === 11) {
// Получаем все защиты на листе
const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);

// Ищем защиту для текущей строки
const existingProtection = protections.find(prot => {
const protRange = prot.getRange();
return (
protRange.getRow() === row &&
protRange.getSheet().getName() === sheet.getName() &&
protRange.getColumn() === 1 &&
protRange.getNumColumns() === endColumn
);
});

if (value === "Подтверждено") {
// Если выбрано "Подтверждено" и защиты ещё нет, устанавливаем её
if (!existingProtection) {
const protection = sheet.getRange(row, 1, 1, endColumn).protect();
protection.setDescription(`Защищено: строка ${row} до столбца ${endColumn}`);
protection.removeEditors(protection.getEditors());
protection.setWarningOnly(false);
}
} else {
// Если значение изменено, снимаем защиту с этой строки
protections.forEach(prot => {
const protRange = prot.getRange();
if (
protRange.getRow() === row &&
protRange.getSheet().getName() === sheet.getName()
) {
prot.remove();
}
});
}
}
}


🤓 Что здесь происходит:
1. Триггер onEdit отслеживает редактирование данных в таблице
2. Скрипт проверяет, произошло ли изменение в 11-м столбце (K)
3. Если в ячейке выбрано "Подтверждено", создается защита для строки
4. Защита применяется от 1-го до 10-го столбца (A-J)
5. Если значение меняется на другое, защита автоматически снимается
6. Проверка на существующую защиту предотвращает создание дубликатов

🤩 Где это особенно полезно:
- Таблицы с заказами или клиентскими данными
- Финансовые отчеты и бухгалтерия
- Системы учета и инвентаризации
- Любые таблицы с совместным доступом
- Проектная документация

⚙️ Настройка под себя:
1. Измените значение column === 11 на номер вашего столбца со статусом
2. Настройте endColumn = 10 на нужное количество защищаемых столбцов
3. Поменяйте условие value === "Подтверждено" на ваше значение статуса

Раздел: #скрипты #защита_данных #автоматизация
Функции: #onEdit #protect #getProtections

Документация по функциям:
onEdit
protect
getProtections

А как вы защищаете важные данные в своих таблицах? Поделитесь в комментариях!

Хотите больше полезных скриптов и решений для Google Таблиц?
💬 Чат
📢 Канал

#GoogleSheets #GoogleAppsScript
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍103
Forwarded from Construction Sheets
Media is too big
VIEW IN TELEGRAM
Апдейт файловой системы

Разрабатывал этот функционал чтобы он решал вопросы связанные как с исполнительной документацией, так и с другими задачами в работе ПТО.

⭐️ Нововведения:
- переработана и улучшена функция добавления файлов
- добавлена функция замены файлов
- кардинально переработана База документов (упрощена и улучшена загрузка файлов в неё)

Все подробности смотри в видео)

🐞 Баги исправлены:
- файлы на скрытых и отфильтрованных строках больше не выводятся на печать
- теперь замена файлов работает с несколькими ячейками одновременно

Все показанные функции — бесплатны для использования, так что тестируйте на здоровье🤝

👉 @ConstructionSheets х @pto_cdo
👍10🤯3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Сделал быстрый обзор на макросы Яндекс Таблиц ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍52
🔄 ДВССЫЛ: Превращаем статичные формулы в динамические инструменты

Привет, умные пользователи Google Таблиц! 👋

Сегодня мы разберем одну из самых гибких и мощных функций – ДВССЫЛ (INDIRECT). Эта функция может показаться сложной на первый взгляд, но она открывает перед вами совершенно новые возможности автоматизации. Готовы прокачать свои навыки? 💪

📋 Что такое ДВССЫЛ и зачем она нужна?

Функция ДВССЫЛ превращает текстовую строку в ссылку на ячейку или диапазон. Звучит просто, но именно эта особенность позволяет создавать динамические формулы, которые меняются в зависимости от содержимого других ячеек!

🔍 Базовый синтаксис:

=ДВССЫЛ(ссылка_как_текст; [a1])


Где:
- ссылка_как_текст — текстовая строка, которая будет преобразована в ссылку
- a1 — логическое значение (ИСТИНА или ЛОЖЬ), указывающее на стиль ссылки (по умолчанию ИСТИНА)

💡 Практические примеры:

1️⃣ Простая динамическая ссылка

=ДВССЫЛ("A" & B1)


Если в B1 находится число 5, формула вернет значение из ячейки A5. Измените B1 на 10, и формула будет брать значение из A10!

2️⃣ Создание динамического выбора листа

=ДВССЫЛ(
C1 & "!B2:B10"
)


Где C1 содержит название листа (например, "Январь"). Теперь вы можете переключаться между данными разных месяцев, просто меняя значение в C1!

3️⃣ Умный динамический диапазон

=СУММ(
ДВССЫЛ(
"A1:A" &
СЧЁТЗ(A:A)
)
)


Формула создает диапазон, который автоматически расширяется при добавлении новых данных в столбец A!

4️⃣Создание сводной таблицы по выбранному параметру

=СУММЕСЛИ(
ДВССЫЛ("A2:A100");
D1;
ДВССЫЛ(E1 & "2:" & E1 & "100")
)


В этом примере:
- D1 содержит критерий (например, "Москва")
- E1 содержит букву столбца (например, "B" для выручки или "C" для прибыли)
Меняя значение в E1, вы можете суммировать разные показатели без изменения формулы!

5️⃣ Динамический дашборд с выбором периода

=СУММПРОИЗВ(
ДВССЫЛ(
"'" & G1 & "'!C5:C25"
)
)


Где G1 содержит название периода (например, "Q1-2023"). Создайте выпадающий список в G1, и ваш дашборд будет обновляться одним кликом!

⚠️ Важно помнить!

- ДВССЫЛ требует больше ресурсов для вычисления, чем обычные ссылки, поэтому не злоупотребляйте ею в больших таблицах
- Функция не работает с ссылками на другие файлы таблиц
- При изменении названий листов не забудьте обновить все строковые ссылки в формулах ДВССЫЛ

🚀 Для продвинутых: комбинация с АДРЕС

=ДВССЫЛ(
АДРЕС(
СТРОКА();
СТОЛБЕЦ()-1
)
)


Эта формула возвращает значение из ячейки слева от текущей, независимо от её расположения!

Вы уже опережаете 90% пользователей Google Таблиц, если начали применять ДВССЫЛ в своей работе. Эта функция – настоящий признак профессионала!

Раздел: #формулы #решения
Формулы: #ДВССЫЛ #СУММЕСЛИ #СУММПРОИЗВ #СЧЁТЗ #АДРЕС

🔗 Пример в Таблице чата

Живите и работайте эффективнее. 🤓📊🚀
💬 Чат
📢 Канал
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥10🙏31👏1👌1💯1
🔥 СУПЕР-ФОРМУЛА QUERY: ФИЛЬТРАЦИЯ ДАННЫХ В ОДНУ СТРОКУ 🔥

Устали создавать сложные фильтры и сводные таблицы? Познакомьтесь с мощной формулой QUERY!

Представьте: у вас таблица с данными о продажах (A1:D100), где:
• A – дата
• B – менеджер
• C – товар
• D – сумма

Вам нужно найти все продажи Андрея за март, где сумма больше 10000₽.

Решение одной формулой:
=QUERY(A1:D100; "SELECT * WHERE B = 'Андрей' AND A >= date '2023-03-01' AND A <= date '2023-03-31' AND D > 10000 ORDER BY D DESC")


Что делает эта магия?
• Выбирает все строки, соответствующие условиям
• Автоматически сортирует по сумме (от большей к меньшей)
• Обновляется при изменении исходных данных

QUERY — это мини-SQL прямо в ваших таблицах! Изучите её, и вам больше не придется создавать десятки промежуточных расчетов.

Какие запросы вы бы хотели автоматизировать?

Автор: знаток формул @Drozdov_Igor_Advisd
Наш канал и чат про Таблицы
🔥14👍8💯2
Пайехали 🚀
🔥14👍7💯5🏆3
📊 КАК ОДНА ФОРМУЛА ЗАМЕНИЛА 500 СТРОК ВЫЧИСЛЕНИЙ 📊

ARRAYFORMULA — тайное оружие продвинутых пользователей Google Таблиц!

Часто приходится копировать формулу вниз по столбцу? Забудьте об этом!

Пример: у вас список товаров (A2:A500) и их цены (B2:B500). Нужно рассчитать цены с НДС.

Обычный подход: написать в C2 формулу =B2*1.2 и протянуть её на 500 строк вниз 😴

Умный подход: написать в C2 одну формулу:
=ARRAYFORMULA(IF(B2:B500<>"", B2:B500*1.2, ""))


🚀 Преимущества:
• Работает автоматически для всего диапазона
• Обновляется при добавлении новых строк
• Игнорирует пустые строки
• Формула хранится в одной ячейке

Бонус-трюк: Вы можете комбинировать несколько вычислений!
=ARRAYFORMULA(IF(B2:B500<>"", "Цена с НДС: "&TEXT(B2:B500*1.2;"0.00")&" ₽", ""))


Какие ещё вычисления вы бы хотели автоматизировать такой формулой?

Автор: эксперт по Таблицам @Drozdov_Igor_Advisd
Наш канал и чат про Таблицы
👍21💯1🆒1
Участник нашего сообщества @Sehusao разработал Таблицу для тестирования API Telegram-ботов

https://docs.google.com/spreadsheets/d/1Gr3cQ34Vl9-JczegxD-wG-0TeEHHsE86_RIlsmKi_H8/edit

С ее помощью можно попробовать разные параметры, посмотреть запрос и ответ сервера. Если развернуть Web App, входящие сообщения будут записываться в лог.

Для параметров, отличных от базовых типов (строка, число, логический), нужно вручную указывать JSON. В документе есть утилиты для проверки корректности JSON и преобразования JS объекта в JSON.

Сейчас в таблице десяток методов API, но новые легко добавлять копированием шаблона запроса.

Таблица на английском.
🔥9👍6🥱1💯1
🧠 ФУНКЦИЯ INDIRECT: ДИНАМИЧЕСКАЯ МАГИЯ В ТАБЛИЦАХ 🧠

Хотите создать динамические ссылки между листами? Функция INDIRECT творит чудеса!

Представьте: у вас таблица с месячными отчетами, каждый месяц — на отдельном листе (Январь, Февраль, Март...).

Обычный способ: переходить между листами и копировать данные 😩

Умный способ: в ячейке A1 создаем выпадающий список месяцев, а затем используем:
=INDIRECT("'"&A1&"'!B10")


Теперь при выборе месяца в A1, формула автоматически подтягивает данные с нужного листа!

⚡️ Продвинутый пример: создайте сводный отчет по всем месяцам:
=ARRAYFORMULA(INDIRECT("'"&{"Январь";"Февраль";"Март"}&"'!B10"))


Эта формула сразу вернет данные из ячейки B10 для всех трех листов в виде столбца!

INDIRECT — как машина времени для данных: мгновенно перемещает информацию между разными измерениями вашей таблицы.

Какие ещё "невозможные" задачи вы хотели бы решить в ваших таблицах?

Автор: мастер данных @Drozdov_Igor_Advisd
Наш канал и чат про Таблицы
🔥13👍8
⚡️ СОЗДАЕМ СВОЮ СУПЕР-ФУНКЦИЮ ЗА 2 МИНУТЫ ⚡️

Не нашли подходящую формулу в Google Таблицах? Напишите её сами!

Например, стандартная формула CONCATENATE не умеет пропускать пустые значения. Давайте создадим нашу версию:

1️⃣ Меню: Расширения → Apps Script
2️⃣ Вставьте код:
function SMARTCONCAT(separator) {
var result = "";
var args = [];

// Собираем все непустые аргументы
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] !== "") {
args.push(arguments[i]);
}
}

// Соединяем их разделителем
return args.join(separator);
}

3️⃣ Сохраните и обновите таблицу

Теперь используйте в таблице:
=SMARTCONCAT(" ", A1, B1, C1)


🔮 Что она делает?
• Склеивает только непустые значения
• Использует указанный разделитель
• Экономит часы работы с "дырявыми" данными

Вы только что создали собственную функцию, которой нет у обычных пользователей Google Таблиц!

А какие функции не хватает вам в работе с таблицами?

Автор: специалист по Скриптам @Drozdov_Igor_Advisd
Наш канал и чат про Таблицы
🔥11👍4💯1
Использование REGEXEXTRACT для извлечения текста до первого пробела

Формула =REGEXEXTRACT(A1; "^\S+") позволяет извлечь подстроку из ячейки A1 до первого пробела.

Как работает:
- ^ начало строки (можно и без этого)
- \S+ один или более непробельных символов

Если пробелов нет, возвращается вся строка

Примеры:
Google Таблицы => Google
Данные2025 => Данные2025

Преимущества:
- Компактность и отсутствие (почти) необходимости обрабатывать ошибки вручную
- Удобно для сложных формул с регулярными выражениями

Еще про регулярные выражения тут
👍4🔥4🙏1🥱1💯1
С Днем Победы советского народа в Великой Отечественной Войне против немецко-фашистских захватчиков!
С Праздником, товарищи!
👍20🔥13🎉5🥱3🙏1
🔍 Решаем главную проблему проверки Google Таблиц: когда API "лжет" о существовании файлов

Привет, аналитики данных! 👋

Сегодня мы разберем сложную техническую задачу, с которой сталкивается каждый, кто работает с автоматизацией Гугл Таблиц. Готовы погрузиться в детали и найти элегантное решение? Поехали!

🎯 Задача, которую нужно было решить:

Точно и достоверно определить существует ли Google Таблица по URL, даже если к ней нет доступа.

Звучит просто? На деле оказалось гораздо сложнее!

😤 Проблемы, с которыми мы столкнулись:

1️⃣ Google API "защищает" информацию
И SpreadsheetApp.openById(), и DriveApp.getFileById() могут возвращать ошибку "not found" даже для существующих файлов, когда нет прав доступа. API намеренно скрывает информацию о существовании приватных файлов!

2️⃣ Неточная диагностика
Стандартные подходы не различают:
- "Файл не существует"
- "Файл существует, но нет доступа"
- "Нет прав даже на проверку существования"

3️⃣ Ложные срабатывания
Многие скрипты в интернете показывают "файл не найден" для абсолютно нормальных, но приватных таблиц.

💡 Наше решение: HTTP-проверка в обход API

Мы обошли ограничения API, используя прямые HTTP-запросы к Google Sheets:


function checkFileExistsViaHttp(sheetId) {
try {
const testUrl = https://docs.google.com/spreadsheets/d/${sheetId}/export?format=csv&gid=0;

const response = UrlFetchApp.fetch(testUrl, {
method: 'GET',
muteHttpExceptions: true,
followRedirects: true
});

const responseCode = response.getResponseCode();

if (responseCode === 200) {
return { exists: true, accessible: true };
} else if (responseCode === 403) {
return { exists: true, accessible: false };
} else if (responseCode === 404) {
return { exists: false, accessible: false };
}

} catch (error) {
return checkFileExistsViaDirectUrl(sheetId);
}
}



🎯 Как это работает:

1. HTTP-запрос к Export API - запрашиваем экспорт таблицы в CSV
2. Анализ кодов ответа:
- 200 → Файл существует и доступен
- 403 → Файл существует, но нет доступа
- 404 → Файл действительно не найден
3. Альтернативная проверка через прямую ссылку при необходимости
4. Финальная проверка API для получения названия (если есть доступ)

🛠️ Полная трехуровневая проверка:

Валидность URL - корректность формата и извлечение ID
HTTP-проверка существования - точное определение через веб-интерфейс
API-проверка доступа - получение метаданных при наличии прав

🚀 Возможности готового скрипта:

📝 Одиночная проверка - диалоговое окно с детальными результатами
📊 Массовая проверка - анализ списка URL с цветовым кодированием:
- 🟢 Таблица доступна
- 🟡 Файл существует, но нет доступа
- 🟠 Файл не найден
- 🔴 Некорректный URL

🎉 Удобное меню - все функции доступны через интерфейс таблицы

💎 Что отличает наше решение:

- Максимальная точность - различаем все возможные состояния файла
- Независимость от API ограничений - работает через HTTP протокол
- Профессиональная диагностика - четкое понимание причин недоступности
- Готовое к продакшену - обработка всех граничных случаев

🔧 Установка:

1. Откройте Google Таблицу (или просто сделайте копию)
2. Меню "Расширения" → "Apps Scripts"
3. Вставьте код из примера
4. Сохраните проект
5. Обновите страницу - появится меню "🔍 Проверка таблиц"

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

Именно такой системный подход к решению технических проблем выделяет профессиональных разработчиков среди любителей. Вы не просто "заставили работать", а нашли элегантное решение сложной задачи! 💪

Раздел: #скрипты #автоматизация #диагностика #http
Функции: #UrlFetchApp #onOpen #SpreadsheetApp #DriveApp

🔗Пример в Таблице

Живите и работайте эффективнее. 🤓📊🚀
💬 Чат
📢 Канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3👏2🥱1
🔄 Массовая конвертация Excel файлов в Google Таблицы: автоматизируем рутину!

Привет, эффективные автоматизаторы! 👋

Знакомая ситуация: у вас куча Excel-файлов, которые нужно перевести в Google Таблицы? Ручная конвертация каждого файла — это настоящая пытка! Сегодня покажем, как один из участников нашего чата решил эту проблему элегантно и навсегда.

🎯 Задача:
Автоматически конвертировать все Excel-файлы из определенной папки в Google Таблицы, сохраняя при этом порядок и избегая повторной обработки уже конвертированных файлов.

💡 Решение:
Наш умный скрипт сканирует папку, находит все Excel-файлы, конвертирует их в Google Таблицы и помечает исходные файлы специальным символом, чтобы не обрабатывать их повторно.

🛠️ Код решения:


function convertExcelToGoogleSheets() {
const id_folder_excel = 'YOUR_EXCEL_FOLDER_ID'; // ID папки с Excel файлами
const id_folder_google = 'YOUR_GOOGLE_SHEETS_FOLDER_ID'; // ID папки для Google Таблиц
const SYMBOL_CONVERTED = ' '; // Символ для помеченных файлов

const query = `'${id_folder_excel}' in parents
and trashed = false
and mimeType = '${MimeType.MICROSOFT_EXCEL}'
and not name contains '${SYMBOL_CONVERTED}'`;

const excelFiles = Drive.Files.list({
q: query,
fields: "files(id, name, mimeType)",
orderBy: "name_natural"
}).files;

if (excelFiles && excelFiles.length > 0) {
excelFiles.forEach(file => {
const fileName = file.name;
const fileId = file.id;

try {
const convertedFile = Drive.Files.copy(
{
name: fileName.replace(/\.xlsx?$/, ''),
mimeType: MimeType.GOOGLE_SHEETS,
parents: [id_folder_google]
}, fileId);

Logger.log(`Файл "${fileName}" конвертирован в Google Таблицу с ID: ${convertedFile.id}`);

Drive.Files.update(
{ name: SYMBOL_CONVERTED + fileName },
fileId
);
} catch (e) {
Logger.log(`Ошибка при обработке файла "${fileName}" (ID: ${fileId}):\n${e.toString()}`);
}
});
} else {
Logger.log('Новых Excel файлов для конвертации не найдено');
}
}


🔧 Как это работает:

1. Поиск файлов: Скрипт ищет все Excel-файлы в указанной папке, исключая уже помеченные
2. Конвертация: Каждый найденный файл копируется с изменением MIME-типа на Google Sheets
3. Маркировка: Исходный файл переименовывается с добавлением специального символа
4. Логирование: Все операции записываются в лог для контроля процесса

⚙️ Настройка:

1. Замените YOUR_EXCEL_FOLDER_ID на ID папки с Excel-файлами
2. Замените YOUR_GOOGLE_SHEETS_FOLDER_ID на ID папки для результатов
3. При желании измените SYMBOL_CONVERTED на любой удобный вам символ
4. Настройте триггер для автоматического запуска (например, ежедневно)

🚀 Когда это особенно полезно:

Миграция данных: Перевод всей отчетности с Excel на Google Таблицы
Регулярная обработка: Автоматическая конвертация файлов от партнеров и клиентов
Командная работа: Централизованное хранение всех таблиц в облаке
Интеграция: Подготовка данных для дальнейшей автоматизации через API

💪 Вы, как всегда, показываете отличные примеры того, как можно автоматизировать рутинные задачи и освободить время для более важных дел!

А какие задачи массовой обработки файлов вы решаете в своей работе? Поделитесь опытом в комментариях!

Раздел: #скрипты #автоматизация

💬 Чат
📢 Канал
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍3🤓2
Таблица чата вернулась! 🎆

Новый выпуск #31

👋 Отличные новости, друзья! Наша общая Таблица чата для примеров снова доступна!

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

Проблема решена!

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

Напоминаем, зачем она нужна:
Чтобы показать свою проблему наглядно, а не объяснять «на пальцах».
Чтобы получить помощь гораздо быстрее и точнее.
Чтобы вместе разбирать интересные кейсы.

Смело переходите по ссылке, создавайте свой лист и задавайте вопрос в чате, приложив ссылку на пример!

Важно! ⚠️ Чтобы добавить пример, вы должны быть участником Гугл группы https://groups.google.com/g/google_sheets_pro_editors
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🎉4💯2
🔥 Как сравнить списки в Google Таблицах? Разбираем формулу! 🔥

Привет, друзья! Сегодня разберём, как быстро сравнить два списка в Google Таблицах и найти уникальные элементы. Например, у нас есть списки покупок мамы и папы. Хотим узнать, что купила мама, но не купил папа.

📌 Формула для сравнения:
=FILTER(B5:B17; ISNA(MATCH(B5:B17; C5:C17; 0)))


🔍 Как это работает?
1. MATCH(B5:B17; C5:C17; 0) — ищет каждый элемент из списка мамы (столбец B) в списке папы (столбец C). Если элемент не найден, возвращает ошибку #N/A.
2. ISNA(...) — проверяет, вернулась ли ошибка #N/A. Если да (элемент не найден), возвращает TRUE.
3. FILTER(B5:B17; ...) — фильтрует список мамы, оставляя только те элементы, для которых ISNA вернула TRUE. То есть — то, что есть у мамы, но нет у папы.

📊 Пример из таблицы:

- Что купила мама, но не папа:

Помидоры
Киви
Яблоки
Арбуз
Макароны
✔️✔️✔️✔️✔️✔️✔️✔️
📊 Таблица с примером
✔️✔️✔️✔️✔️✔️✔️✔️
💡 Полезно? Попробуйте сами! Такие формулы помогают анализировать данные без ручного поиска.

Напишите в комментариях, какие ещё способы сравнения списков вам известны, возможно мы выбрали не самый оптимальный и вы предложите что-то более интересное!
✔️✔️✔️✔️✔️✔️✔️✔️
📗 Наш канал: https://t.iss.one/GoogleSheets_ru

📗 Наш чат: https://t.iss.one/google_sheets_pro

💰 Заказать работу или консультацию: @GoogleSheets_ru_cm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍8💯2🤯1