en
Feedback
Volond Apps

Volond Apps

Open in Telegram

Программирование для души и от лени Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от

Show more
246
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
function getDistance(origin, destination) { // return distance in meters var lon1 = toRadian(origin[1]), lat1 = toRadian(origin[0]), lon2 = toRadian(destination[1]), lat2 = toRadian(destination[0]); var deltaLat = lat2 - lat1; var deltaLon = lon2 - lon1; var a = Math.pow(Math.sin(deltaLat/2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(deltaLon/2), 2); var c = 2 * Math.asin(Math.sqrt(a)); var EARTH_RADIUS = 6371; return c * EARTH_RADIUS * 1000; } function toRadian(degree) { return degree*Math.PI/180; } var distance = getDistance([lat1, lng1], [lat2, lng2])

 javaScript
String.prototype.to10 = function(base) {
  var lvl = this.length - 1;
  var val = (base || 0) + Math.pow(26, lvl) * (this[0].toUpperCase().charCodeAt() - 64 - (lvl ? 0 : 1));
  return (this.length > 1) ? (this.substr(1, this.length - 1)).to10(val) : val;
}

Number.prototype.to26 = function(suffix) {
    suffix = String.fromCharCode((this % 26) + 65) + (suffix || '');
    return this >= 26 ? (Math.floor(this / 26) - 1).to26(suffix) : suffix;
};

Бардак на столе На свете есть два типа людей - те, кто любят на столе порядок и те, кто любят на столе бардак. Даже любопытно - те, кто любят на столе порядок гораздо более склонны приказывать любителям бардака прибраться. Наоборот примеров я в жизни не встречал ("А ну-ка быстро навел на столе пиздец, разложил все бумаги кучами и накидал всего пирамидой!"). Совершенно нет никакого смысла пытаться превратить одних в других. У любителей порядка чуть лучше имидж, они всегда предъявляют пустой стол в качестве доказательство своего аккуратного старания. Но секрет в том, что бардак - это не плевок в лицо остальным людям, а способ организации информации и предметного мира. Скажем, для непосвященного человека мой кабинет - просто лютый пиздец, бардачелло, нагромождение куч говна и тропинка среди стопок книг, сундуков, машинного масла, проводов, стульев, газетных вырезок, колонок и обуви. А для меня это - идеальный способ осмысленной многомерной организации мультидисциплинарных единиц хранения. Я знаю, на какой глубине в какой куче лежит какой документ. Я знаю, в каком ящике искать какой артефакт. Потери составляют сотые доли процента, да и то потому, что какая-то сука когда-либо что-то решила без моего спроса переложить.

=ARRAYFORMULA(MAP( B2:B12; ROW(B2:B12); LAMBDA(X;Y;COUNTIF(INDIRECT("B2:B" & Y);X)>1 )))
=ARRAYFORMULA(MAP(
  B2:B12;
  ROW(B2:B12);
  LAMBDA(X;Y;COUNTIF(INDIRECT("B2:B" & Y);X)>1
)))

Используйте именованный диапазон в исходной таблице https://infoinspired.com/google-docs/spreadsheet/importrange-named-ranges-in-google-sheets/

Реализация function queryAPI() { let sheetId = SpreadsheetApp.getActive().getId(); let sheet = 'Sheet1'; let req = 'SELECT A,
Реализация function queryAPI() { let sheetId = SpreadsheetApp.getActive().getId(); let sheet = 'Sheet1'; let req = 'SELECT A, Sum(B) WHERE C>30 GROUP BY A'; let outputFormat = 'out:csv'; let urlTemplate = 'https://docs.google.com/spreadsheets/d/%s/gviz/tq?tqx=%s&sheet=%s&tq=%s'; let url = Utilities.formatString(urlTemplate, sheetId, outputFormat, sheet, encodeURIComponent(req)); let params = { method: 'get', headers: {'Authorization': "Bearer " + ScriptApp.getOAuthToken(), muteHttpExceptions: true} }; let query = UrlFetchApp.fetch(url, params); let text = query.getContentText(); let output = text.split('\n').map(x=>JSON.parse(`[${x}]`)); console.log(output) }

Визуализация с Google Chart Tools API / Хабр https://habr.com/ru/post/304296/

Repost from Хабр
14 КБ это слишком много. Делаем сайты меньше 1 КБ Минимализм хорош во всех отношениях. Во-первых, это красиво. Во-вторых, эффективно. Разница в скорости загрузки сайтов особенно заметна на фоне монструозных корпоративных приложений с мегабайтами скриптов, тормозящих практически на любом устройстве. Поразительно, что за годы компьютеры ускорились в десятки раз, а сайты грузятся медленнее, чем раньше. Только подумайте, на сколько же сайтам нужно жиреть каждый год, чтобы сохранить эти тормоза! Известно, что для минимизации задержки важным рубежом является 14 КБ. Если ужать веб-страницу или её первую часть в меньший объём, загрузка сильно ускоряется из-за спецификации TCP, которая определяет максимальный размер пакета в 1500 байт (из них 1460 полезных) и алгоритма медленного старта TCP, ограниченного десятью пакетами. Но 14 КБ — не предел оптимизации. Далеко не предел

GAS Library Management (public)

math - Calculate date from week number in JavaScript - Stack Overflow https://stackoverflow.com/questions/16590500/calculate-date-from-week-number-in-javascript

Мой опыт взаимодействия с SheetsAPI от Google Если Вас интересует задача отслеживания изменений на Google-диске, проматывайте на заголовок "Этапы 2-4. Узнаем об изменениях в файле."