Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Forwarded from volond
=Arrayformula(split(textjoin("";true;transpose({SEQUENCE(1;$A$1;2);split(rept("_"&$A$2&"#,";$A$1);",")}));"#"))
Forwarded from volond
Возможно кому-то понадобиться список периодов дат на каждый год

=arrayformula(transpose(TEXT(DATEVALUE("1."&SEQUENCE(1;12;1)&"."&year(today()));"dd.mm.yyyy"))&"-"&{TEXT(transpose(DATEVALUE("1."&SEQUENCE(1;11;2)&"."&year(today()))-1);"dd.mm.yyyy");TEXT(DATE(year(today());12;31);"dd.mm.yyyy")})
#formula
И период дат для текущего месяца
=arrayformula(TEXT(DATEVALUE(SEQUENCE(1;index(transpose({arrayformula(day(transpose(DATEVALUE("1."&SEQUENCE(1;11;2)&"."&year(today()))-1)));day(DATE(year(today());12;31))});1;MONTH(today()));1)&"."&MONTH(today())&"."&year(today()));"dd.mm.yyyy"))
#formula #date
Автоматическое создание уникальных идентификаторов в 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