Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
СyrillicPattern
#regexp
function cyrillicPattern(){
const cyrillicPattern = /[\u0400-\u04FF]/;
const cyrillicPattern1 = /(?<I>[\u0400-\u04FF]+)\s{1,}(?<F>[\u0400-\u04FF]+)\s{1,}(?<O>[\u0400-\u04FF]+)/;
console.log('Привіт:', cyrillicPattern.test('Привіт'));
console.log('Hello:', cyrillicPattern.test('Hello'));
console.log('Привіт Вася Пупкин', 'Привіт Вася Пупкин'.match(cyrillicPattern1));
var {I,F,O}='Привіт Вася Пупкин'.match(cyrillicPattern1).groups
console.log([I,F,O])//[ 'Привіт', 'Вася', 'Пупкин' ]
}
Получение 1-й пустой ячейки определенного столбца путем поиска в TOP листа
// Pattern 3: getNextDataCell
const patternA3_ = (columnNumber) => {
const range = SpreadsheetApp.openById(ssId)
.getSheets()[0]
.getRange(1, columnNumber);
return range.getDisplayValue()
? range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1
: 1;
};
Получение 1-й непустой ячейки определенного столбца путем поиска снизу листа.
// Pattern 4: TextFinder
const patternB4_ = (columnNumber) => {
const sheet = SpreadsheetApp.openById(ssId).getSheets()[0];
const search = sheet
.getRange(1, columnNumber, sheet.getMaxRows())
.createTextFinder(".")
.useRegularExpression(true)
.findPrevious();
return search ? search.getRow() : 1;
};
dpicker

Источник:

••••••••••
Обсудить:
Forwarded from DidacticСardsBot
Скрипт Google Apps: сохранение уникального ключа пользователя от пользователя, получающего доступ к вашему веб-приложению

Источник:



Почему это важно? Что ж, вы можете ограничить количество раз, когда пользователь отправляет форму в вашем WebApp. Если вы можете получить уникальный ключ доступа пользователя, вы можете сохранить количество попыток пользователя и проверить его перед отправкой данных.

••••••••••
Обсудить:
Forwarded from Kanat
Уникальные без удаления строк
#snippet #JS #GAS
function g(range){
//var range=[['v'],["v"],["b"]]
var r=range.flat()
var u=[...new Set(r)]
var d=r.reduce((acc, el) => {
acc[el] = (acc[el] || 0) + 1;
return acc;
}, {})
var a=Object.entries(d)
return a.map((e)=>[e[0],...Array(e[1]-1)
.fill('')])
.flat()
.map((h,i)=>[range[i][0],h])
}
Путь к пониманию шаблонных литералов в JavaScript

Источник:



Шаблонные литералы дают нам новый механизм создания строковых значений. Этот механизм отличается множеством мощных возможностей, среди которых — упрощение создания многострочных конструкций и использование местозаполнителей для внедрения в строки результатов вычисления выражений. Кроме того, тут имеется и ещё одна возможность — теговые шаблоны (tagged template literals). Это — расширенная форма шаблонных литералов. Теговые шаблоны позволяют создавать строки с использованием выражений, находящихся внутри строк, и с применением особых функций. Всё это расширяет возможности программистов по работе со строками, позволяя, например, создавать динамические строки, которые могут представлять собой URL, или писать функции для тонкой настройки HTML-элементов.

••••••••••
#JS #book
Обсудить:
Forwarded from Alex Pirks
Из собственного наблюдения.
Дело не в CRM и таблицах. А в неумении менеджеров работать с данными, которые живут в бизнес процессах.
Если менеджер понимает с чем он имеет дело, он сам выберет необходимый ему инструмент и ... архитектуру проекта.
А таблицы это как мираж озера в пустыне, кажется "щас напьтемся досыта", ан нет, вы еще только в начале пути автоматизации бизнес процессов.
Еще добавлю, одну мысль, которая была отпечатана на бумаге и висела в рамке у одной команды разработчиков.
"Автоматизация эффективных процессов увеличивает их эффективность, автоматизация неэффективных - увеличивает неэффективность."
​​Лайфхак для тех, кто пишет

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

На самом деле я до сих пор иногда также туплю, возможно поэтому в блоге статьи появляются раз в квартал, лол.

Секрет в том, чтобы перед написанием чего-то сесть на 30 мин и почитать книгу. Идеально, если это какая-нибудь художественная, но на самом деле любая подойдет (хотя какая-нибудь Python for dummies может и не подойдет).

Как это работает (мое предположение):

1. Ты сосредотачиваешься, 30 мин чтения на самом деле не хуже медитаций. Думаю, дело как раз в том, что лодка клипового мышления внутри головы перестает так сильно раскачиваться, как вовремя постоянного серфинга лент

2. Типичный день, особенно будни — это текучка из задач, постоянный тудулист, по которому ты идешь, рутина без какого-либо творчества. Написать что-то красиво и интересно — задача из другого раздела.

Сесть почитать — это окунуться в мир своих фантазий, 30 мин и вы фреш для глаголинга пером

Минус в том, что можно сильно увлечься книгой, поэтому нужно сразу себя настроить на короткий спринт. А еще этот прием подойдет для каких-нибудь брейнштормов, людям, кому иногда нужно из себя креатив на конвейере поставлять 👁