Forwarded from Бэкдор
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Установка/импорт пакетов NPM в проект сценария приложения Google
https://manikumar.in/blog/integrating-npm-packages-in-google-apps-script-guide/
https://manikumar.in/blog/integrating-npm-packages-in-google-apps-script-guide/
Mani Kumar | Product Consultant
Installing/importing NPM Packages into your Google App Script Project | Blog | Mani Kumar | Product Consultant
Unlocking Advanced Functionalities in GAS: A Step-by-Step Guide to Embed to-words and dayjs from NPM into Your App Script Project.
Forwarded from Google Apps Script | Канал
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой пример создания нумерованного списка через Docs API v1 Advanced Service. К сожалению, через штатный класс
DocumentApp такого не сделать. Ссылка https://docs.google.com/document/d/12AokCuVrafj3DGMDrHVNXanDthaphxkqEVkYw_Iil5Y/edit?usp=sharingForwarded from ServerAdmin.ru
🎓 Мне давно скидывали ссылку на небольшой курс по GIT на youtube для начинающих. Там с самых азов даётся инфа для тех, кто с GIT никогда не работал. Только сейчас дошли руки посмотреть. Вроде неплохо сделано, послушал введение. Комментарии хорошие, просмотров много. Весь материал разбит на небольшие ролики по 5-7 минут, где разбирается одна тема. Если вы совсем нулёвый по этой теме, то это для вас:
⇨ Базовый курс по Git
Заодно решил подбить всю эту тему с обучением GIT.
▪️ Обзорное видео по GIT от авторского ютуб канала Артема Матяшова - Git. Большой практический выпуск. Автор очень хорошо объясняет. Если прям ничего про GIT не знаете, рекомендую начать с него. Хороший монтаж, подача, оформление. Я почти все его видео с удовольствием смотрел. У него их немного.
🔥Очень прикольная визуальная обучалка по основам GIT - LearnGitBranching. Она поддерживается, регулярно обновляется. Качественно сделана. Есть русский язык.
▪️ Ещё одна игра по обучению GIT - Oh My Git! Она попроще learnGitBranching, но в целом тоже неплохая.
▪️ Бесплатный курс по основам от Слёрм - Git для начинающих.
▪️ Бесплатные курсы по основам GIT на Stepik: Основы работы с Git и Самоучитель по GIT.
▪️ Более продвинутый курс с погружением в нюансы, ориентированный на разработчиков - Git курс от сообщества javascript.ru.
▪️ Бесплатная книга на русском языке - Pro Git book.
В завершении добавлю мотивирующий текст, который я написал ещё 3 года назад здесь на канале, если вы всё ещё сомневаетесь, надо ли вам разбираться с GIT или нет:
Хочу посоветовать всем системным администраторам, кто это еще не сделал, обратить пристальное внимание на git. Сам я давно пользуюсь этой системой контроля версий, но только недавно дошел до того, что стал там хранить практически все текстовые данные.
Чистил свою тестовую лабу и удалил несколько виртуалок. И только потом вспомнил, что на одной из них были нужные скрипты, на написание которых ушло прилично времени. Все репозитории проверил, нигде не нашел копий. Их просто не было. Пришлось потратить несколько часов на восстановление.
Теперь всегда, прежде чем начать писать какой-то скрипт или более ли менее большой конфиг, создаю репозиторий под это дело и все пушу туда. Я обычно использую облачный gitlab и свой локальный для приватных данных. Gitlab - мое личное предпочтение. Вы можете использовать любой бесплатный сервис. Их сейчас полно развелось.
Мало того, что это удобный контроль изменений, так еще и мгновенный бэкап всей информации по одной команде. Плюс, можно быстро что-то отредактировать через веб интерфейс. В общем, удобно, рекомендую. Еще и к разработчикам приблизитесь, будете лучше разбираться в их кухне.
С тех пор я неизменно верен себе. Все нужные скрипты, конфиги в обязательном порядке хранятся в репозиториях git, как локально на ноуте, так и на удалённых сервисах.
#обучение #git #подборка
⇨ Базовый курс по Git
Заодно решил подбить всю эту тему с обучением GIT.
▪️ Обзорное видео по GIT от авторского ютуб канала Артема Матяшова - Git. Большой практический выпуск. Автор очень хорошо объясняет. Если прям ничего про GIT не знаете, рекомендую начать с него. Хороший монтаж, подача, оформление. Я почти все его видео с удовольствием смотрел. У него их немного.
🔥Очень прикольная визуальная обучалка по основам GIT - LearnGitBranching. Она поддерживается, регулярно обновляется. Качественно сделана. Есть русский язык.
▪️ Ещё одна игра по обучению GIT - Oh My Git! Она попроще learnGitBranching, но в целом тоже неплохая.
▪️ Бесплатный курс по основам от Слёрм - Git для начинающих.
▪️ Бесплатные курсы по основам GIT на Stepik: Основы работы с Git и Самоучитель по GIT.
▪️ Более продвинутый курс с погружением в нюансы, ориентированный на разработчиков - Git курс от сообщества javascript.ru.
▪️ Бесплатная книга на русском языке - Pro Git book.
В завершении добавлю мотивирующий текст, который я написал ещё 3 года назад здесь на канале, если вы всё ещё сомневаетесь, надо ли вам разбираться с GIT или нет:
Хочу посоветовать всем системным администраторам, кто это еще не сделал, обратить пристальное внимание на git. Сам я давно пользуюсь этой системой контроля версий, но только недавно дошел до того, что стал там хранить практически все текстовые данные.
Чистил свою тестовую лабу и удалил несколько виртуалок. И только потом вспомнил, что на одной из них были нужные скрипты, на написание которых ушло прилично времени. Все репозитории проверил, нигде не нашел копий. Их просто не было. Пришлось потратить несколько часов на восстановление.
Теперь всегда, прежде чем начать писать какой-то скрипт или более ли менее большой конфиг, создаю репозиторий под это дело и все пушу туда. Я обычно использую облачный gitlab и свой локальный для приватных данных. Gitlab - мое личное предпочтение. Вы можете использовать любой бесплатный сервис. Их сейчас полно развелось.
Мало того, что это удобный контроль изменений, так еще и мгновенный бэкап всей информации по одной команде. Плюс, можно быстро что-то отредактировать через веб интерфейс. В общем, удобно, рекомендую. Еще и к разработчикам приблизитесь, будете лучше разбираться в их кухне.
С тех пор я неизменно верен себе. Все нужные скрипты, конфиги в обязательном порядке хранятся в репозиториях git, как локально на ноуте, так и на удалённых сервисах.
#обучение #git #подборка
// This formats the date as Greenwich Mean Time in the format
// year-month-dateThour-minute-second.
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
Logger.log(formattedDate);
Настройка Pub/Sub для Gmail API WebHooks - Поддержка Aurinko
https://docs.aurinko.io/ctg-getting-started/configuring-pub-sub-for-gmail-api-webhooks
https://docs.aurinko.io/ctg-getting-started/configuring-pub-sub-for-gmail-api-webhooks
Aurinko Support
Configuring Pub/Sub for Gmail API Webhooks - Aurinko Support
Aurinko API docs
/**
* Converts a Firestore Timestamp to a native JavaScript Date object.
* Перевод из формата Firebase Timestamp в JavaScript Date
* @param {Timestamp} timestamp Firestore Timestamp to convert
* @return {Date} native JavaScript Date object
* const date = firebaseTimestampToDate({ _seconds: 1725021788, _nanoseconds: 105817000 });
*
*/
function firebaseTimestampToDate(timestamp) {
// Создаем новый объект Date, используя общее количество миллисекунд
const date = new Date(
(timestamp._seconds * 1000) + (timestamp._nanoseconds / 1000000)
);
return date;
}
Создание своих сниппетов в VS Code
Урок
Генератор сниппетов »
#VSCode
ТАЙМ КОДЫ:
00:00 Вступление
00:18 Что такое сниппеты
01:23 Создание первого сниппета console.log()
04:16 Создание сниппета background-img
06:33 Генератор сниппетов
07:49 Scope для сниппета
08:05 Позиция курсора
08:37 Тестирование сниппета
09:34 Идеи для сниппетов
Урок
Генератор сниппетов »
#VSCode
ТАЙМ КОДЫ:
00:00 Вступление
00:18 Что такое сниппеты
01:23 Создание первого сниппета console.log()
04:16 Создание сниппета background-img
06:33 Генератор сниппетов
07:49 Scope для сниппета
08:05 Позиция курсора
08:37 Тестирование сниппета
09:34 Идеи для сниппетов
YouTube
Создание своих сниппетов в VS Code
Как создавать пользовательские сниппеты в редакторе VS Code.
Генератор сниппетов: https://snippet-generator.app/
Статья в блоге: https://webcademy.ru/blog/980/
Материалы ВебКадеми на всех площадках: https://webcademy.ru/taplink/
::::::::::::::::::::…
Генератор сниппетов: https://snippet-generator.app/
Статья в блоге: https://webcademy.ru/blog/980/
Материалы ВебКадеми на всех площадках: https://webcademy.ru/taplink/
::::::::::::::::::::…
Forwarded from Kirill Rez
Volond Apps pinned «https://docs.google.com/spreadsheets/d/1Lk6OClOPA8p94fspQrs8-M-W080tb244U-fWGqvnApk/edit?gid=253009584#gid=253009584»
const handleCardClick = (e: React.MouseEvent) => {
const card = e.currentTarget;
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
card.style.transform = perspective(1000px) rotateX(${-y / 10}deg) rotateY(${x / 10}deg);
setTimeout(() => {
card.style.transform = '';
}, 100);
setPoints(points + pointsToAdd); setClicks([...clicks, { id: Date.now(), x: e.pageX, y: e.pageY }]);
};Обработчик события клика:
const handleCardClick = (e: React.MouseEvent<HTMLDivElement>) => { ... } ```
— это функция, которая принимает событие клика как аргумент.
Получение элемента карточки:
```const card = e.currentTarget;```— здесь currentTarget указывает на элемент, на который было совершено нажатие, т.е. на карточку.
Получение размеров и позиции карточки:
const rect = card.getBoundingClientRect();
— этот метод возвращает размеры и положение карточки относительно видимой области экрана.
Вычисление смещения клика:
const x = e.clientX - rect.left - rect.width / 2;
— вычисляет смещение по оси X относительно центра карточки.
const y = e.clientY - rect.top - rect.height / 2;
— вычисляет смещение по оси Y относительно центра карточки.
Применение 3D-трансформации:
card.style.transform = perspective(1000px) rotateX(−y/10deg)rotateY({x / 10}deg); ```— здесь устанавливается CSS-трансформация, создающая эффект поворота карточки по осям X и Y в зависимости от положения курсора мыши.
Сброс трансформации:
```setTimeout(() => { card.style.transform = ''; }, 100); ```— через 100 миллисекунд трансформация сбрасывается, возвращая карточку в исходное положение.
Обновление очков и кликов:
```setPoints(points + pointsToAdd); — обновляет состояние очков, добавляя к текущему значению points значение pointsToAdd.
```setClicks([...clicks, { id: Date.now(), x: e.pageX, y: e.pageY }]);```— добавляет новую запись о клике в массив clicks, содержащую уникальный идентификатор (время нажатия) и координаты клика.
В итоге, эта функция создает интерактивный эффект на карточке при клике, а также обновляет состояние приложения, связанное с очками и кликами
Отсутствие результата тоже результат
Точнее НУ ОЧЕНЬ МЕДЛЕННЫЙ....
XML_to_JSON
Точнее НУ ОЧЕНЬ МЕДЛЕННЫЙ....
XML_to_JSON
/* Source: https://gist.github.com/erickoledadevrel/6b1e9e2796e3c21f669f */
/**
* Converts an XML string to a JSON object, using logic similar to the
* sunset method Xml.parse().
* @param {string} xml The XML to parse.
* @returns {Object} The parsed XML.
*/
function XML_to_JSON(xml) {
var doc = XmlService.parse(xml);
var result = {};
var root = doc.getRootElement();
result[root.getName()] = elementToJSON(root);
return result;
}
/**
* Converts an XmlService element to a JSON object, using logic similar to
* the sunset method Xml.parse().
* @param {XmlService.Element} element The element to parse.
* @returns {Object} The parsed element.
*/
function elementToJSON(element) {
var result = {};
// Attributes.
element.getAttributes().forEach(function (attribute) {
result[attribute.getName()] = attribute.getValue();
});
// Child elements.
element.getChildren().forEach(function (child) {
var key = child.getName();
var value = elementToJSON(child);
if (result[key]) {
if (!(result[key] instanceof Array)) {
result[key] = [result[key]];
}
result[key].push(value);
} else {
result[key] = value;
}
});
// Text content.
if (element.getText()) {
result['Text'] = element.getText();
}
return result;
}
Нумерация строк формулой
Иногда нужно пронумеровать строки формулой что бы при сортировке отображалось именно в какой строке находиться значения
Иногда нужно пронумеровать строки формулой что бы при сортировке отображалось именно в какой строке находиться значения
=Let(title;"Строка";if(CountA(A2:A)>0;{title;arrayformula(Row(indirect("A2:A"&CountA(A1:A))))};title))
Forwarded from Дмитрий
Ну и я тогда поделюсь) когда то мне захотелось сделать интерфейс, но я не шарю. Нашел openasapp.net
Суть простая: делаешь таблицу на формулах, например подсчет ЗП или KPI или подобный "специфичный калькулятор", заливаешь в платформу и в UI конструкторе делаешь кнопки, ползунки и пр. ссылаясь на ячейки. Работает бесплатно до какого то лимита уже не помню какого. В маркете скачиваешь универсальное приложение, которое то ли облачно то ли скриптово делает из него то что сделал ты в онлайн редакторе. Эта тема была задолго до аппшита, Апшит я так и не понял честно говоря, а в этой штуке разобрался когда то.
ps ну и этим можно делиться с людьми просто ссылкой, лимит вроде как раз на кол-во юзеров. Накидал что то удобное, расшарил, нужно обновить - обновил у всех
Суть простая: делаешь таблицу на формулах, например подсчет ЗП или KPI или подобный "специфичный калькулятор", заливаешь в платформу и в UI конструкторе делаешь кнопки, ползунки и пр. ссылаясь на ячейки. Работает бесплатно до какого то лимита уже не помню какого. В маркете скачиваешь универсальное приложение, которое то ли облачно то ли скриптово делает из него то что сделал ты в онлайн редакторе. Эта тема была задолго до аппшита, Апшит я так и не понял честно говоря, а в этой штуке разобрался когда то.
ps ну и этим можно делиться с людьми просто ссылкой, лимит вроде как раз на кол-во юзеров. Накидал что то удобное, расшарил, нужно обновить - обновил у всех
Forwarded from volond
https://www.youtube.com/watch?v=-Ido-G7J6iU Вот тут чудах из браузера отправляет форму в таблицу через развернутый webApp чего хотелось бы избежать
YouTube
Как отправить данные HTML-формы в Google Sheets
Смотрим как (1) устроена HTML-форма, (2) CSS-стили для неё, (3) как устроена функция doPost() в Google Таблице и (4) как устроен JavaScript на HTML-странице (спойлер - используется Fetch API)
👉 [01:08] 1. Как устроена форма на HTML
👉 [03:53] 2. CSS-оформление…
👉 [01:08] 1. Как устроена форма на HTML
👉 [03:53] 2. CSS-оформление…