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
Хабрахабр:Парсинг Яндекс Карт или как найти целевую аудиторию Как написать парсер Яндекс Карт? А также аналитика данных организаций. Поиск целевой аудитории Читать далее

Node Express redirect (А Также другие уроки!!!!!) https://masteringjs.io/tutorials/express/redirect

/**
* Форма с добавлением в верх списка того же листа V/2
* Очистка заполненой формы
*/
function formAdd(){ const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet=ss.getSheetByName('Аркуш4') var formRange=sheet.getRange('A2:C2') var values=formRange.getValues()[0] values[0]=new Date().getTime() sheet.appendRow(values) SpreadsheetApp.flush() var lastRow=sheet.getLastRow() sheet.getRange('A4:C'+lastRow).sort([{column: 1, ascending: false}]) formRange.clearContent() }

https://www.benlcollins.com/spreadsheets/slow-google-sheets/ Вперед к оптимизации ибо все вышеперечисленное может тормозить таблицу

Это обсуждали тут https://stackoverflow.com/questions/46923770 И я сегодня написал свою функцию для тестирования скорости работы формул массива. Мой вариант среди ответов.

=map(A2:A20;LAMBDA(x;SPARKLINE(1;{"charttype"\"column";"color"\VLOOKUP(x;Source!$A$1:$C$8;3;false)}))) цвет берем отсюда
=map(A2:A20;LAMBDA(x;SPARKLINE(1;{"charttype"\"column";"color"\VLOOKUP(x;Source!$A$1:$C$8;3;false)}))) цвет берем отсюда

.xlsx изнутри. Разбор структуры файлов. Разбор каждого .xml файла https://habr.com/ru/post/593397/#relsrels Примеры использования для GAS https://tanaikech.github.io/2022/09/28/retrieving-named-functions-from-google-spreadsheet-using-google-apps-script/ Отступ для EXCEL https://youtu.be/PimqwBF-oHo Алгоритм для GAS 1C Делает группировку и уровни показывает отступами Чаще всего в одном крайне левом столбце Ищем в xl/worksheets/sheet1.xml
<row r="1" spans="1:1" x14ac:dyDescent="0.25">
<c r="A1" s="1">
<v>1</v>
</c>
</row>

<row r="2" spans="1:1" x14ac:dyDescent="0.25">
<c r="A2" s="2">
<v>2</v>
</c>
</row>

Теги с содержащие в себе r с буквой необходимого столбца а также имеющие параметр s Например:s="2" Потом Ищем в xl/styles.xml
<cellXfs count="3">
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyAlignment="1">
<alignment horizontal="left" indent="5"/>
</xf>
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyAlignment="1">
<alignment horizontal="left" indent="10"/>
</xf>
</cellXfs>

где каждая строка это стиль номер которого указан в параметре s в нем
indent 
как раз отвечает за размер отступа
<alignment horizontal="left" indent="10"/>

/** * Последнее заполненное значение( Итоговое не считаеться) * по контрагенту в сводной таблице * https://docs.google.com/spreadsheets/d/1grRWdal_u60lzmj2Ubhi6k9rL3ajvg4hJt8A1M7exu4/edit#gid=0 * @customfunction */ function getData(data, contr) { var res = [] var rows = data .filter(e => e[2] == contr) .forEach(r => { r.pop() r = r.reverse() var i = r.length - r.findIndex(e => e) res.push(i) }) var index = Math.max(...res) return data[1][index - 1] + " " + data[0][index - 1] }

По поводу моего вчерашнего вопроса. Я смог получить доступ к ID пользователя через ручной запуск скрипта без адских пермишинов на весь аккаунт пользователя. Для этого нужно всего лишь....
/**
 * @OnlyCurrentDoc
 */

указать данную директиву в начале файла. Подробнее читайте здесь. Далее всё уже вроде просто в моём учебном проекте. Другой вопрос. Что это за адская дичь, когда пермишены по умолчанию дают доступ ко всему аккаунту гугл драйв пользователя? В чёт тут смысл? Это же капец небезопасно.

Всем привет! Хочу поделиться своей новой утилитой для переключения scriptId в clasp. Надеюсь кому-то будет полезно. https://www.npmjs.com/package/clasp-env

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])