Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Forwarded from volond
=query(A2:A,"select A where " & textjoin(" and ",true,ARRAYFORMULA(" A contains '" & QUERY({B2:C},"select Col2 where Col1=True") &"'")))
Аудит Google Drive
Сценарий
ListFilesFolders: это скрипт Google Apps, в котором перечислены все файлы и / или папки в
* Папка Google Диска, а затем записывает список в электронную таблицу партиями. В скрипте используется
* механизм кэширования, позволяющий восстанавливать вывод после возможного сбоя; однако это не будет продолжаться
* чтобы восстановить прерванный скрипт и продолжить поиск.
PropertyServices
Упрощает использование PropertyServices сценариев Google Apps. Может обрабатывать объекты и сохранять значения даты.

Пример

// initialize available stores, with sensible default values
const lib = Properties.scriptStore(); // or
const lib = Properties.userStore(); // or
const lib = Properites.documentStore();

// set keys to values of any kind, including nested objects with dates!
lib.set('key', 564);
lib.set('obj', {nested: [1, 2, new Date(), 400.2, {hi='hi'}]});

// retrieve values with get
const value = lib.get('obj')
value.nested[4].hi; // 'hi'

// retrieve keys with getKeys
const keys = lib.getKeys(); // array

// bulk update
lib.setProperties({
key: 0,
obj: {}
});

// remove keys
lib.remove('key'); // just the one
lib.removeAll(); // all of them

// get everything
// (possibly very slow: goes through each key and stores onto new object)
const props = lib.getAll(); // returns key value object
This media is not supported in your browser
VIEW IN TELEGRAM
Измените порядок файлов в проекте Apps Script #newIDE
This media is not supported in your browser
VIEW IN TELEGRAM
Мульти-курсор для одновременного редактирования нескольких строк
[ALT] + click,
чтобы вставить
#newIDE
This media is not supported in your browser
VIEW IN TELEGRAM
Скопируйте строку ниже или выше
с помощью
[ALT] + [SHIFT] + [UP] или [ALT] + [SHIFT] + [DOWN]
#newIDE
Запрет на ввод дубликатов
=COUNTIF($A:$A;"="&A1) < 2
#formula
Как отфильтровать массив объектов по атрибутам?
var obj = {
'homes': [{
"home_id": "1",
"price": "925",
"sqft": "1100",
"num_of_beds": "2",
"num_of_baths": "2.0",
}, {
"home_id": "2",
"price": "1425",
"sqft": "1900",
"num_of_beds": "4",
"num_of_baths": "2.5",
},
// ... (more homes) ...
]
};
// (Note that because `price` and such are given as strings in your object,
// the below relies on the fact that <= and >= with a string and number
// will coerce the string to a number before comparing.)
var howToFilterObjectArrayBasedOnAttributes=()=>{
var newArray = obj.homes.filter(function (el) {
return el.price <= 1000 &&
el.sqft >= 500 &&
el.num_of_beds >= 2 &&
el.num_of_baths >= 1.5; // Changed this so a home would match
});
console.log(newArray);
}
#JS #array #object #filter
Пользовательский формат чисел в Google Таблицах

Правила пользовательского формата чисел в Google Таблицах используются для определения специальных правил форматирования чисел.

Эти настраиваемые правила управляют отображением чисел на листе без изменения самого числа. Это визуальный слой, добавленный поверх числа. Это мощный метод, поскольку вы можете комбинировать визуальные эффекты, не изменяя данные.

•••••
Пользовательский формат чисел в Google Таблицах

#cusomformat
Как мы создавали высокопроизводительный движок электронных таблиц на JavaScript

Наконец-то появилось видео моего оновленного доклада про Excel на JavaScript.
Это самая полная версия доклада. Немного прошелся по архитектуре и показал реальные демо.

Представьте, что перед вами стоит задача сделать движок электронных таблиц (без UI), совместемый с MS Excel. И задача движка запускать огромные математические модели на сотни тысяч формул с производительностью близкой к оригинальному движку Excel. Нам пришлось выжимать все до последнего с JavaScript. Это тот проект, который нельзя реализовать без знания алгоритмов, структур данных, внутренностей V8.

Если интересно на что способен JS, то доклад должен понравиться 😀

ССЫЛКА НА ВИДЕО: https://www.youtube.com/watch?v=08bkGZTGxjM
Forwarded from Max Makhrov
Друзья, привет!

Сегодня я обнаружил, что в выпадающие списки можно вставлять не только абсолютные, но и относительные ссылки.

Это просто 🔥!

Дает возможность сделать 2-мерные многострочные связанные выпадающие списки без скриптов.

Демо:
https://docs.google.com/spreadsheets/d/1Vuq9_jJHgLJ7fe6yF0EZEERlo0LTChXezhqHjLUwmaY/copy
Проверка массива на пустоту
var arr
var arr1 = []
var arr11 = [1]
console.log(!!arr && arr.length > 0)//false
console.log(!!arr1 && arr1.length > 0)//false
console.log(!!arr11 && arr11.length > 0)//true
#JS #snippet
Управляйте защищенными диапазонами и листами в Google Таблицах с помощью Apps Script

Итак, давайте посмотрим, как это сделать в с помощью #GAS.
Допустим, вы хотите запретить кому-либо, кроме себя, редактировать ячейки A1: B10:

// Protect range A1:B10, then remove all other users from the list of editors.
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('A1:B10');
var protection = range.protect().setDescription('Sample protected range');
// Ensure the current user is an editor before removing others. Otherwise, if the user's edit
// permission comes from a group, the script will throw an exception upon removing the group.
var me =Session.getEffectiveUser();protection.addEditor(me);protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) { protection.setDomainEdit(false);
}
Или, может быть, вы хотите удалить все защиты диапазона во всей электронной таблице:

// Remove all range protections in the spreadsheet that the user has permission to edit.
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
if (protection.canEdit()) {
protection.remove();
}
}
Или, возможно, вы хотите защитить весь лист, но вырезать в нем небольшое отверстие - незащищенный диапазон на защищенном листе, - который другие все еще могут редактировать:

// Protect the active sheet except B2:C5,
// then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');
var unprotected = sheet.getRange('B2:C5');
protection.setUnprotectedRanges([unprotected]);
// Ensure the current user is an editor before removing others.
// Otherwise, if the user's edit permission comes from a group,
// the script will throw an exception upon removing the group.
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()){
protection.setDomainEdit(false);
}
«Динамика роста лени интернет-поколения» или «Давай я поищу за тебя»

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

С 2008-го года, а именно с даты существования моих "
Заметок Сис.Админа" я постоянно занимаюсь поддержкой пользователей не только в реальной жизни, но и в виртуальной, т.е через форму обратной связи.
Ежедневно я получаю десятки запросов через эту форму по разному рода проблемам, связанным с компьютерами и сопутствующими устройствами из мира IT. С появлением форума в 2009-ом разного рода запросов стало и того больше. На основе этого (и работы как таковой) я имею перед глазами достаточно объемную статистику по тому, что интересует пользователей, с какими проблемами они сталкиваются и как пытаются их решить.

И вот что я заметил.

Чем дальше тем, собственно, больше я замечаю одну неприятную тенденцию, - пользователи в край обленились искать информацию по проблемам, которые решить нужно непосредственно им. Нет, я понимаю, что с ростом интернета, конечно, просто больше народу в него попадает (в том числе не компетентного или очень молодого), но динамика напрягает и, как по мне, так всё чаще и чаще люди занимаются откровенной бредо-ленно-ерундистикой.

И, если раньше проекты "давай я поищу за тебя" вызывали у меня только улыбку, то теперь они мне кажутся как никогда актуальными. Мало того, что люди просто не хотят искать информацию самостоятельно (ну, бывает, да, что человек не очень опытен и не может сформулировать запрос максимально эффективно), но проблема в другом, - им лень её искать.

Доходит до абсурда, когда они видят статью со всеми подробностями и рекомендациями, разжеванную до безумия и даже с примерами чего купить или куда нажать конкретно в их случае.. И тут же через форму (или в комментариях) спрашивают то, что написано выше прямым текстом. Т.е им лень читать (я уж не говорю про необходимость думать), но зато есть время написать бессмысленный, с точки зрения разума и логики, вопрос. Причем кидаешь им ответ, цитирующий статью и они искренне благодарят. Спрашивается, собственно, что мешало прочитать, а не тратить своё и чужое время на вопрос-ответ.

Я уж не говорю о том, что решения и ответы на вопросы, которые, быть может не описаны в статьях на том же sonikelf.ru, находятся по запросу из их же письма в первой же ссылке в любом поисковике. Ладно, бог с ним. Но доходит не просто до абсурда, а до бреда, в духе: лень читать (коммент: перескажите кратко содержание), лень смотреть (коммент: перескажите, что делать?), лень искать, лень-лень лень. Я даже процитирую одного из нашего подписчиков в ВК: "Лень смотреть...лень читать.. лень тестировать...неужели вам нужно чтобы все прям в ухо вливали?" (с). По мне так выходит, исходя из написанного выше, видимо лучше, чтобы за них прямо всё и сразу делали, а не писали какие-то там статьи и видеоролики.

Такой подход меня это поражает чем дальше, - тем, собственно, больше. Я понимаю, что это звучит как некое старческое брюзжание, но, повторюсь, что опираясь на вышеупомянутую статистику, динамика имеет место быть и причем не в лучшую сторону (хотя, казалось бы, с развитием интернета должно быть как раз наоборот, ибо статей-роликов-советов всех вариаций на любые темы становится ежечасно больше и больше, - успевай выбирать).

Оставлю эту заметку без выводов, - пусть их каждый делает сам.
Такие дела.
#book
Тема:Регулярное выражение для проверки ФИО.

Источник:


Пример валидный имен

Петров Петр Петрович
Петров-Черный Петр Петрович
И Иван Иванович
Ли Лу Янг
Dwain Simmons
Dwain-Branden Simmons
Салим-оглы Мамед
Салим-кызы Лейла
Не проходит валидацию

фамильные приставки (фон, цу, ибн-, абу-)
••••••••••
#JS