Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Автоматическое создание уникальных идентификаторов в Google Таблицах
#JS
// UID UNIQUENESS
// ID_LENGTH = 3: 226,920 posible values
// ID_LENGTH = 4: 13,388,280 posible values
// ID_LENGTH = 5: 776,520,240 posible values
// ID_LENGTH = 6: 44,261,653,680 posible values


var ID_LENGTH = 5;

// Thanks to Tom Spencer for this function
// Tom's website/blog is at fiznool.com
function generateUID () {
var ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var rtn = '';
for (var i = 0; i < ID_LENGTH; i++) {
rtn += ALPHABET.charAt(Math.floor(Math.random() * ALPHABET.length));
}
return rtn;
}
Mod и остаток — не одно и то же
В
любом случае: на прошлой неделе я узнал что-то странное и хочу поделиться: оказывается, mod и остаток от деления — не одно и то же. Действительно забавно то, что некоторые читатели при этих словах выпрыгивают со своих кресел и орут: «А ведь именно это я всегда пытался сказать вам и всем остальным!»
Читать...
Получаем последнюю Дату Текущего месяца
#formula
=day(DATE(YEAR(now());MONTH(now());32)-1)
#JS #date
Date.prototype.daysInMonth = function() {
return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate();
};
Выводим список День + Название Дня недели
const getDaysArray = (year, month) => {
year = year || new Date().getFullYear()
month = month || new Date().getMonth()+1
console.log(month)
const names = Object.freeze(
['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']);
const date = new Date(year, month - 1, 1);
const result = [];
while (date.getMonth() == month - 1) {
result.push(`${date.getDate()}-${names[date.getDay()]}`);

date.setDate(date.getDate() + 1);
}
return result;
}
//[ '1-fri','2-sat',....,'30-sat','31-sun' ]
#JS #date
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