#GoogleТаблицы — это аналог #Excel с веб-интерфейсом и возможностями для удобной совместной работы. Они похожи, и все же в Таблицах есть свои особенности, функции, плюсы и минусы. Работать в Google Таблицах просто и мы покажем как.
function pasteValue() {
const value = Browser.inputBox('Введите значение').toString();
const cell = SpreadsheetApp.getActiveRange();
const old_value = cell.getValue().toString();
cell.setValue((old_value.length ? old_value + ';' : '') + value);
};=ВЫБОР({1;2};первый диапазон; второй диапазон)
То есть в качестве номера задаем сразу массив в фигурных скобках - и ВЫБОР возвращает оба диапазона, указанные в аргументах, вместе.=ВЫБОР (ячейка с оценкой; "один"; "два"; "три"; "четыре"; "пять")ПЕРЕКЛЮЧ / SWITCH В Excel появилась в версии 2016, в Таблицах называется SWITCH даже при русском языке формул. В ПЕРЕКЛЮЧ первый аргумент - выражение (значение из ячейки), а все последующие - это пары "значение - результат". Последний аргумент - результат для всех остальных случаев. Например, можно задать разную скидку для трех каналов продаж, а для остальных - нулевую:
=SWITCH(ячейка с каналом продаж;"Сайт";15%;"Магазин";12%;"Ярмарка";10%;0)
Ссылка на таблицу с примерамиТеперь вы готовы, наш чат: @google_spreadsheets_chatonOpen(){} – пользователь при открытии Таблицы будет автоматически перемещаться на последний лист.
Спасибо Даниилу Осипову!
function go_last_sheet() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheets();
ss[ss.length - 1].activate();
}
—————————————
Определяем индекс последней строки с данными в выбранном столбце.
Спасибо создателю циклов!
function getLastRow(data, column) {
var max = 0;
for (x in data) {
if (data[x][column - 1]) {
max = x * 1 + 1;
};
}
return max;
}
—————————————
Превращаем текст, написанный болдом в текст вида *текст*. Лайфхак – если в v сослаться на само значение (смотрите скриншот), то функция будет обновляться при его изменении.
Спасибо Роману Игнатову!
function getBold(r,v) {
return SpreadsheetApp.getActive().getActiveSheet().getRange(r).getRichTextValue().getRuns().map(run=>
run.getTextStyle().isBold()?`*${run.getText()}*`:run.getText()
).join(' ');
}
Полное оглавление нашего канала: тыц
Наш чат: @google_spreadsheets_chat_ (нижнее подчеркивание) перед = (для QUERY получится _=QUERY(аргументы формулы))
И в работу вступает скрипт – он копирует формулу, вставляет её на лист "temp", далее копирует результат формулы как значения и вставляет результат туда, куда вы вставляли формулу изначально.
Чтобы все заработало:
1) скопируйте код в свою Таблицу в редактор скриптов
2) поставьте функцию pasteFnct на триггер редактирования таблицы (поищите по каналу, как это сделать)
Нюанс:
Скрипт будет копировать функцию на временный лист "как она есть", поэтому диапазоны должны быть Лист!A:B, а не просто A:B.=ARRAYFORMULA( СЧЁТЕСЛИМН(D4:D14;A1:A2;E4:E14;">1"))FILTER, смотрите скриншот. Таких функций в Таблице были сотни и всё тормозило именно из-за них.
Решение тут простое - функция FILTER - функция массива, она может сразу выводить несколько ячеек.
❌ Не используйте FILTER тогда, когда вам нужно посчитать значение одной ячейки.
✅ Используйте классические и оттого более быстрые для Таблицы варианты (в данном случае - COUNTIFS / СЧЕТЕСЛИМН), Таблица с ними точно заработает быстрее.step в коде (можете с ним поиграть и выставить другое значение).
Код
Таблица с кодом