Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Замена по словарю

В дружественном чате возник вопрос если в тексте встречаются буквы латиницы которые похожи на кириллицу,как их найти и заменить.Получилось вполне симпатично ,причем данный #snippet вполне можно применять для решения задачи "Замена по словарю"
Принцип разделения функциональности (в табличных процессорах)
@oshliaer
ПРФ (в электронных таблицах) - предложение не использовать смешение функций табличных процессоров (ТП). Если разделить функции ТП на хранение, обработку и представление, то можно значительно упростить использование и расширить функционал рабочей модели, которую обслуживает ТП. Самый простой способ достижения этого - использовать правило: "одна функция - один лист". Например, для Таблицы Гугл, которая получает данные из Формы, функцию хранения выполняет лист, привязанный к Форме. Если необходимо как-то модифицировать данные, то необходимо использовать второй лист, для обработки. Если требуется распечатать или вывести на экран в читаемом виде текущие данные, то необходимо использовать третий лист - представление.
подробнее...
Собираем из всех листов значения кроме текущего
Добавляем уникальный ключ для строк
(Пользовательская формула)
таблица
Как сделать склонение числительных на javascript.
Без склонения числительных пользователь может увидеть «8 мортышка(ек)» или «4 трамваев» и т.д. Это не красиво и усложняет процесс восприятия интерфейса.

Поэтому для многих стало нормой делать системы, которые бы склоняли числительные, так, чтобы пользователю было удобно читать интерфейс, так, как будто интерфейс – живое существо.
#snippet #JS
clasp - The Apps Script CLI
Apps Script CLI, или clasp, это инструмент, позволяющий создавать, редактировать и развертывать проекты Apps Script локально. Он позволяет создавать и публиковать веб-приложения и надстройки для таких продуктов, как Таблицы, Документы, Формы и Слайды, из командной строки. Есть два способа разработки Apps Script: с помощью script.google.com или локально на вашем компьютере.
Инструкция
Вы также можете попробовать clasp в Gitpod, онлайн-среде IDE для GitHub
Что поддерживает V.8 Google Apps Script
Сводная таблица
🛠GAS-LIB🛠
Автозаполнение скриптов Google Apps в вашей IDE

Installation
npm install --save-dev gas-lib
Ваши собственные всплывающие окна, удобные для CSS / XHTML
ссылка
Forwarded from St M
Для быстрого доступа к видосам , выкладываю ссылки на все плейлисты по всем сервисам на которые есть видео:

Google Sheets (Таблицы Гугл) Lessons: https://www.youtube.com/playlist?list=PLlHR3f8sb05BNZ_mWF0Qt2oqnHKwOSJRf

Фишки, Трюки и Лайфхаки Гугл Таблиц: https://www.youtube.com/playlist?list=PLlHR3f8sb05Cz8TH3s_wRAZkjVqGttZS4

Google Apps Script, Скрипты в Гугл таблицах: https://www.youtube.com/playlist?list=PLlHR3f8sb05B9n0jnXgS3yxn2CTQ3XOGS

Уроки по Гугл Формам
https://www.youtube.com/watch?v=OGHl45NwzhI&list=PLlHR3f8sb05DqlFCMfek-Nbje-9lJaDfY

Новости Google Таблиц.: https://www.youtube.com/playlist?list=PLlHR3f8sb05CDpAMfg6l5liYSUP35HOu2

Google Docs, Гугл Докс, Гугл документы - уроки!: https://www.youtube.com/playlist?list=PLlHR3f8sb05DV0FdQl1IC5zx14Ub52YF0
Получение периода в Зависимости от дня формирования
Мне иногда необходимо получить период отчета в зависимости от дня
когда я его формирую
То есть если допустим сегодня 1 число а день отчета 7 дней
то получу период Прошлый месяц
а если сегодня 10 то период будет с начала текущего месяца по сегодня
далее...
getLastDayOfMonth.png
108.4 KB
Последний день месяца
/**
* Последний день месяца
*
* @param {Number} year
* @param {Number} month
* @returns {Date}
*/
function getLastDayOfMonth(year, month) {
//0-11 Номера месяцев
let date = new Date(year, month + 1, 0);
return date.getDate();
}
formatToday.png
182.9 KB
Форматирование даты
/**
* Форматирование даты
* 31-10-20 при delim="-" и format="dd,mm,yy"
* @param {Date} today
* @param {string} [delim="."]
* @param {string} [format="dd,mm,yyyy"]
* @returns {string}
*/
function formatToday(today,delim=".",format="dd,mm,yyyy") {
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
var yy=[...yyyy.toString()].splice(2).join("")
if (dd < 10) { dd = '0' + dd }
if (mm < 10) { mm = '0' + mm }
eval(`var arr=[${format}]`)
today = arr.join(delim)// dd + '.' + mm + '.' + yyyy;
return today


}
Получаем динамические области экрана
var getRangesByPattern=()=>{
// Исходные данные
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet=ss.getSheetByName('Щоденник')
var dataRange=sheet.getDataRange()
var findArr=dataRange.getValues()
var findCol=1
var Cols=10
// Патерны и функция поиска
var startPr=q=>/Дата приймання/i.exec(q[findCol])
var endPr=q=>/Всього.*/i.exec(q[findCol])
var find=(a,pred)=>a.findIndex(pred)

//Получаем диапазоны с листа
var headerOrderN=find(findArr,startPr)
var headerOrder=sheet.getRange(1, 2,headerOrderN,Cols)
var headerMain=sheet.getRange(headerOrderN+1, 2,1,Cols)
var mainN=find(findArr,endPr)
var main=sheet.getRange(headerOrderN+2, 2,mainN-headerOrderN-1,Cols)
var footer=sheet.getRange(mainN, 2,dataRange.getLastRow()-mainN-1,Cols)
console.log(main.getA1Notation())
return {headerOrder,headerMain,main,footer}

}
"Псевдоразделение" в Ячейке Google Sheet+Стрелки

="↙️ f"&char(10)&Rept("-";10)&char(10)&"b ↘️"
#formula
Удалили лист и слетели все формулы...HELP ME‼️
не
беда: ФОРМУЛЫ можно восстановить ... 🚑
function myFunction() {
var nameDelSheet = "Меня удалили"
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
var range = sheets.filter(sh => sh.getName() != nameDelSheet).map(sh => {
var range = sh.getDataRange()
range.setFormulas(range.getFormulas())
}
Запускаем функцию "фоново"
Оригинал: Bruce Axtens

В последнее время я пробиваю 6-минутную стену таймаута в Apps Script.
Моя проблема заключается в том, чтобы поместить имена функций, которые я хочу запускать в фоновом режиме, в свойство скрипта, а затем извлекать их каждый раз при срабатывании таймера. Это, конечно, ограничено одной функцией в минуту. Во 2 части я покажу, как увеличить это значение до 4 в минуту, и, возможно, на любую долю минуты (с помощью устанавливаемых триггеров .)

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


Читать полностью...
This media is not supported in your browser
VIEW IN TELEGRAM
Подсветка значений которые округлены с помощью пользовательского формата

Иногда
нужно понять какие числа были округлены
ссылка на таблицу с кодом
ссылка на исходный код
runSelectionAll.png
215.3 KB
**
* Пакетное выполнение функции в выделенном диапазоне
* Функция принимает ячейку как RANGE
* var fn=(cell)=>console.log(cell.getA1Notation())
* runSelectionAll(fn)
* @param {Function} fn Функция которая будет исполняться над каждой ячейкой диапазона
*/
function runSelectionAll(fn){


const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet = ss.getActiveSheet()
var selection = sheet.getSelection();
var ranges = selection.getActiveRangeList().getRanges();
ranges.forEach(range=>{
var res=expandA1Notation([range.getA1Notation()])
var rangeList=sheet.getRangeList(res[0]).getRanges()
rangeList.forEach(fn)
})

}