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

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

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

РКН: clck.ru/3F3u9M
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Добрый день!

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

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

Мы написали небольшой скрипт, который подсвечивает защищённые диапазоны, а также может одним цветом выделить все защищённые листы.

Делайте копию этой таблицы, скрипты в ней.

Пример кода:

function onOpen() {
SpreadsheetApp
.getUi()
.createMenu('| ПОДСВЕТКА |')
.addItem('Активировать подсветку защищённых диапазонов', 'fire')
.addItem('Деактивировать подсветку защищённых диапазонов', 'clearfire')
.addSeparator()
.addItem('Активировать подсветку защищённых листов', 'fireSh')
.addItem('Деактивировать подсветку защищённых листов', 'clearFireSh')
.addToUi();
}

/////////////////////////////////////////////////////////////

function fire() {

const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const prs = sh.getProtections(SpreadsheetApp.ProtectionType.RANGE);

prs.forEach(x => {
if (x.canEdit()) {
x.getRange().setBackground('
#00ff00');
};
});
ss.toast('Подсветка защищённых диапазонов активирована!')
}

/////////////////////////////////////////////////////////////

function clearfire() {

const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const prs = sh.getProtections(SpreadsheetApp.ProtectionType.RANGE);

prs.forEach(x => {
if (x.canEdit()) {
x.getRange().setBackground(null);
};
});
ss.toast('Подсветка защищённых диапазонов деактивирована!')
}

/////////////////////////////////////////////////////////////

function fireSh() {

const ss = SpreadsheetApp.getActive();
const sh = ss.getSheets();

sh.forEach(x => {
let pr = x.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
console.log(pr[0])
if (pr && pr.canEdit()) { x.setTabColor('red') }
});
ss.toast('Подсветка защищённых листов активирована!')
}

/////////////////////////////////////////////////////////////

function clearFireSh() {

const ss = SpreadsheetApp.getActive();
const sh = ss.getSheets();

sh.forEach(x => {
let pr = x.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
console.log(pr)
if (pr && pr.canEdit()) { x.setTabColor(null) }
});
ss.toast('Подсветка защищённых листов деактивирована!')
}



📗 Канал и Чат
📕 Оглавление канала
🏄 Заказ работы у нас
🔥16👍7👎2😎1
Media is too big
VIEW IN TELEGRAM
🚀 Запускаем своё первое doGet-приложение в Google Таблицах

Хотите, чтобы ваши скрипты выполнялись по одной ссылке?
Это реально! Мы покажем, как за пару минут развернуть простое веб-приложение прямо в Google Таблицах.

🔥 Что это за приложение?
doGet-приложение запускает функцию, имя которой вы укажете в ссылке (?func=).
Например:

?func=clear — очистить таблицу,
?func=color — закрасить её случайными цветами.

Всё работает в один клик, а код остаётся полностью скрытым.

💡 Зачем это нужно?
• Вы даёте коллегам только ссылку — без раскрытия кода.
• Приложение запускается от вашего аккаунта.
• Можно подключить сколько угодно функций и запускать их прямо из браузера.

Пример кода
В примере всего две функции:
color() — заполняет каждый лист в таблице (массив 20×20) случайными цветами.
clear() — очищает все листы в таблице.


function doGet(e) {
const funcName = e.parameters['func'];
console.log(funcName);
this[funcName]();
}

function clear() {
const ss = SpreadsheetApp.getActive();
const sheets = ss.getSheets();
for (let sh of sheets) {
sh.clear();
}
SpreadsheetApp.flush();
}

function color() {
const ss = SpreadsheetApp.getActive();
const sheets = ss.getSheets();

for (let sh of sheets) {
let arr = [];
for (let i = 0; i < 20; i++) {
arr[i] = [];
for (let j = 0; j < 20; j++) {
arr[i][j] = basicColors[getRandomInt(0, basicColors.length - 1)];
}
}
sh.getRange(1, 1, arr.length, arr[0].length).setBackgrounds(arr);
}
SpreadsheetApp.flush();
}

const basicColors = [
"#FF0000", // красный
"#00FF00", // зелёный
"#0000FF", // синий
"#FFFF00", // жёлтый
"#FFA500", // оранжевый
"#800080", // фиолетовый
"#00FFFF", // бирюзовый
"#FFC0CB", // розовый
"#A52A2A", // коричневый
"#FFFFFF", // белый
"#000000" // чёрный
];

function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}


🚀 Как это работает
[ссылка веб-приложения]?func=clear → моментальная очистка.
[ссылка веб-приложения]?func=color → мгновенная заливка таблицы цветами.

Названия функций можно менять. Добавьте свои — и запускайте любое количество скриптов через ?func=.

📺 В видео показано, как развернуть приложение и получить на него ссылку.

🔥 На интенсиве мы разберём такие приёмы подробно и соберём рабочие проекты прямо на ваших глазах.
t.me/google_sheets/1860
1🔥209