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

https://pastebin.com/RmrRYKWW
таблица с скриптом
Как создать и запустить простой автономный скрипт,
который создает документ Google и
отправляет Вам ссылку по электронной почте.
скрипт
Forwarded from Android: activated
Чтобы помочь продавцам (а заодно и всем тем, кому нужно не забывать следить за отправкой электронной почты!), в автоответчик Gmail была добавлена небольшая, но мощная фишка — Auto Follow Up. Эта функция позволяет устанавливать последовательность писем (так называемых follow-up писем), которые через заданные промежутки времени будут отправляться автоматически вслед за первым электронным письмом, отправленным из Gmail. И всё это одним щелчком мыши.

Auto Follow Up for Gmail — это бесплатное расширение для браузера Chrome. Устанавливается оно в один клик.

Читать пост | Скачать
Forwarded from volond
This media is not supported in your browser
VIEW IN TELEGRAM
Что бы заполнять по шаблону делали все
А что бы приготовить шаблон из готового документа

У нас есть плоская таблица
Допустим вытянули с 1С
Нужно нагенерить куду документов
И есть шаблон как это сделать
Подготавливаем шаблон и генерим
Сделал так потому что у меня шаблон на 26 страниц и на 50 параметров
И сам шаблон не часто но периодически меняется
Обновление пользовательских функций
/*@customfunction*/
function sheetNames(e) {
return SpreadsheetApp.getActive()
.getSheets()
.map(function(sheet) {
return sheet.getName();
});
}

/*Create a installable trigger to listen to grid changes on the sheet*/
function onChange(e) {
if (!/GRID/.test(e.changeType)) return; //Listen only to grid change
SpreadsheetApp.getActive()
.createTextFinder('=SHEETNAMES\\([^)]*\\)')
.matchFormulaText(true)
.matchCase(false)
.useRegularExpression(true)
.replaceAllWith(
'=SHEETNAMES(' + (Math.floor(Math.random() * 500) + 1) + ')'
);
}

Или

Для того, чтобы данные в таблице всегда были актуальными, хочется сделать эту формулу автообновляемой. Прямого способа сделать это нет, но GAS комьюнити придумало вот такой хак:


Мы резервируем ячейку, в которую при каждом обновлении листа будет складываться случайное число
function onEdit(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sheet.getRange('Z1').setValue(Math.random())
}
Эту ячейку мы будем указывать в качестве аргумента у тех функций, которым необходим периодический пересчёт, например getPriceByTicker
=getPriceByTicker("YNDX", Z1)


Таблица с примером
Источник
kikMedia.png
173.3 KB
//---------UTIL---IFTTT---
//if
var isDizinkan=diizinkan(kuncen, userid)
var isSome=(tgObj)=>tgObj.map(media=>msg[media])
//To
var delMsg=(chats,msgId)=> tg.deleteMessage(chats,msgId)
// -------- selain anon-admins/channel - delete media kecuali photo -------
var medias=['sticker','audio','voice','video_note','video','animation','document','poll']
return isSome(medias)&&!dizinkan?delMsg(chats,msg.message_id):null
// --- delete Contact - Dice - game ---
return isSome(['contact', 'dice','game'])?delMsg(chats,msg.message_id):null
Volond Apps pinned «https://telegra.ph/CHitat-Kak-Otche-Nash-12-08»
Create webhooks from Google sheets

Webhooks мы уже получали (Телеграм бот Да⁉️),
а как насчет что бы отправлять например при изменении в определенной строке
Причем мы не будем использовать триггеры
...😃

🛠 Пользовательские функции запускаются всякий раз, когда изменяются входные данные, это механизм, который я использую для получения нашего веб-перехватчика.‼️

‼️Кстати в таком случае скрипт видит изменения сделанные другим скриптом
‼️

Ссылка на таблицу

#webapp #sheet #gas
RegExp:Замена переноса строк на пробел

var reg='
[\t\n\v\f\r\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]'

#gas #regexp
Как создать визуальный индикатор состояния в электронной таблице Google Таблиц

При переходе в «режим проекта» всегда приятно иметь визуальное представление текущего статуса. Независимо от того, является ли этот статус отдельной задачей или всем проектом, он помогает быстро понять, как далеко мы продвинулись и сколько еще осталось пройти.
#sheet
Балуемся с датами

Вариант
1 ‼️
var [d,m,y]='13/12/2020'.split("/")
console.log(new Date(y,m-1,d))
Вариант 2
var a='13/12/2020'.split("/")
a[1]-=1
console.log(new Date(a.reverse()))
Вариант 3
var regDataTime = /(?<d>\d{1,2}/(?<mont>\d{1,2})/(?<y>\d{1,4});
let { y, mont, d} = '13/12/2020'.match(regDataTime).groups;
var nextData =new Date(y, mont - 1, d)
Вариант 4 ‼️
const dateStr = '13/12/2020'; 
const normalDate = new Date(dateStr.split('/').reverse();
console.log(normalDate.toLocaleDateString('ru')); 13.12.2020 console.log(normalDate.toLocaleDateString('eu')); 2020/12/13
#gas
Мгновенное голосование во втором туре

В
этом проекте IRV - это метод выбора одного победителя. Избиратели ранжируют кандидатов в форме Google, и администратор запускает скрипт со скриптом Google Apps, чтобы определить победителя.


instant-runoff
#googlesheet #googleform
Этот репозиторий содержит примеры многих популярных алгоритмов и структур данных на основе JavaScript.

Каждый алгоритм и структура данных имеют свой собственный README с соответствующими пояснениями и ссылками для дальнейшего чтения (включая ссылки на видео на YouTube).