Create webhooks from Google sheets
Webhooks мы уже получали (Телеграм бот Да⁉️),
а как насчет что бы отправлять например при изменении в определенной строке
Причем мы не будем использовать триггеры ...😃
🛠 Пользовательские функции запускаются всякий раз, когда изменяются входные данные, это механизм, который я использую для получения нашего веб-перехватчика.‼️
‼️Кстати в таком случае скрипт видит изменения сделанные другим скриптом‼️
Ссылка на таблицу
#webapp #sheet #gas
Webhooks мы уже получали (Телеграм бот Да⁉️),
а как насчет что бы отправлять например при изменении в определенной строке
Причем мы не будем использовать триггеры ...😃
🛠 Пользовательские функции запускаются всякий раз, когда изменяются входные данные, это механизм, который я использую для получения нашего веб-перехватчика.‼️
‼️Кстати в таком случае скрипт видит изменения сделанные другим скриптом‼️
Ссылка на таблицу
#webapp #sheet #gas
Как создать визуальный индикатор состояния в электронной таблице Google Таблиц
При переходе в «режим проекта» всегда приятно иметь визуальное представление текущего статуса. Независимо от того, является ли этот статус отдельной задачей или всем проектом, он помогает быстро понять, как далеко мы продвинулись и сколько еще осталось пройти.
#sheet
При переходе в «режим проекта» всегда приятно иметь визуальное представление текущего статуса. Независимо от того, является ли этот статус отдельной задачей или всем проектом, он помогает быстро понять, как далеко мы продвинулись и сколько еще осталось пройти.
#sheet
Балуемся с датами
Вариант 1 ‼️
Вариант 1 ‼️
var [d,m,y]='13/12/2020'.split("/")
console.log(new Date(y,m-1,d))
Вариант 2var a='13/12/2020'.split("/")
a[1]-=1
console.log(new Date(a.reverse()))
Вариант 3var regDataTime = /(?<d>\d{1,2}/(?<mont>\d{1,2})/(?<y>\d{1,4});
let { y, mont, d} = '13/12/2020'.match(regDataTime).groups;
var nextData =new Date(y, mont - 1, d)
Вариант 4 ‼️const dateStr = '13/12/2020';#gas
const normalDate = new Date(dateStr.split('/').reverse();
console.log(normalDate.toLocaleDateString('ru')); 13.12.2020 console.log(normalDate.toLocaleDateString('eu')); 2020/12/13
Надстройка Google Sheet для синхронизации событий с Google Calendar. См. Подробные инструкции на веб-сайте . Надстройка находится в G Suite Marketplace .
#googlesheet #googlecalendar #addon
#googlesheet #googlecalendar #addon
GitHub
GitHub - davepar/gcalendarsync: Apps Script for syncing a Google Spreadsheet with Google Calendar
Apps Script for syncing a Google Spreadsheet with Google Calendar - GitHub - davepar/gcalendarsync: Apps Script for syncing a Google Spreadsheet with Google Calendar
Мгновенное голосование во втором туре
В этом проекте IRV - это метод выбора одного победителя. Избиратели ранжируют кандидатов в форме Google, и администратор запускает скрипт со скриптом Google Apps, чтобы определить победителя.
instant-runoff
#googlesheet #googleform
В этом проекте IRV - это метод выбора одного победителя. Избиратели ранжируют кандидатов в форме Google, и администратор запускает скрипт со скриптом Google Apps, чтобы определить победителя.
instant-runoff
#googlesheet #googleform
Этот репозиторий содержит примеры многих популярных алгоритмов и структур данных на основе JavaScript.
Каждый алгоритм и структура данных имеют свой собственный README с соответствующими пояснениями и ссылками для дальнейшего чтения (включая ссылки на видео на YouTube).
Каждый алгоритм и структура данных имеют свой собственный README с соответствующими пояснениями и ссылками для дальнейшего чтения (включая ссылки на видео на YouTube).
GitHub
GitHub - trekhleb/javascript-algorithms: 📝 Algorithms and data structures implemented in JavaScript with explanations and links…
📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings - trekhleb/javascript-algorithms
Ресурсы Google Workspace Developer GDE 🛠
Супергерои известны тем, что носят плащи, сражаются со злодеями и стремятся спасти мир от зла. Также есть супергерои, которые спокойно предпочитают использовать свои сверхспособности, чтобы объяснять технологии новым пользователям, поддерживать форумы сообщества, писать сообщения в блогах, выступать на мероприятиях, размещать сериалы видео, создавать демонстрации, делиться образцами кода и т. И все во имя того, чтобы помочь другим разработчикам стать более успешными за счет приобретения новых навыков, создания более качественных приложений и, в конечном итоге, повышения их карьеры. В Google мы называем последнюю категорию супергероев экспертами-разработчиками Google или для краткости «GDE».
Программа Google Developer Experts - это глобальная сеть высококвалифицированных технологических экспертов, идейных лидеров и влиятельных лиц, которые активно поддерживают сообщества разработчиков по всему миру, делясь своими знаниями и энтузиазмом по широкому кругу тематических областей от Android до Angular до Google Assistant и Google Cloud. - и, конечно же, Google Workspace. Помня о том, что все GDE - добровольцы, которые не только свободно уделяют время поддержке других, но также помогают улучшать наши продукты, предлагая свои проницательные отзывы, тщательно тестируя новые функции, часто перед их выпуском, при этом помогая расширять как варианты использования, так и аудиторию. способ.
Если вы заинтересованы в общении и получении дополнительной информации о том, о чем говорят или работают GDE, следите за ними через их социальные каналы. Большинство GDE довольно активно делятся всем: от ежедневных советов, мероприятий до проектов с полностью открытым исходным кодом. Воспользуйтесь приведенными выше ссылками в профилях GDE или ознакомьтесь с полным каталогом GDE, чтобы познакомиться с экспертами по всем технологиям разработчиков Google.
Сообщество Google Workspace GDE также содержит несколько действительно полезных ресурсов, которые стоит посетить:
Форумы сообщества
Группы Google - groups.google.com/g/google-apps-script-community
Stack Overflow - stackoverflow.com/questions/tagged/google-apps-script
Slack- google-apps-script.slack.com
Списки
Twitter - twitter.com/i/lists/1235144368593367043
Medium Google GDE Blogs - medium.com/google-developer-experts
https://developers.google.com/community/experts/directory
Apps Script Pulse (Новости) - pulse.appsscript.info
Digital Inspiration (дополнения и инструкции) - digitalinspiration.com
Основы Google Таблиц ( инструкции по автоматизации) - benlcollins.com
Desktop Liberation (руководства по скриптам приложений) - ramblings.mcpher.com
Teacher Tech (ресурсы для EDU) - alicekeeler.com
Totally Unscripted (выставка сообщества) - sites.google.com/corp/view/totallyunscripted/home
GDE Видео
Totally Unscripted - www.youtube.com/c/TotallyUnscriptedShow
Супергерои известны тем, что носят плащи, сражаются со злодеями и стремятся спасти мир от зла. Также есть супергерои, которые спокойно предпочитают использовать свои сверхспособности, чтобы объяснять технологии новым пользователям, поддерживать форумы сообщества, писать сообщения в блогах, выступать на мероприятиях, размещать сериалы видео, создавать демонстрации, делиться образцами кода и т. И все во имя того, чтобы помочь другим разработчикам стать более успешными за счет приобретения новых навыков, создания более качественных приложений и, в конечном итоге, повышения их карьеры. В Google мы называем последнюю категорию супергероев экспертами-разработчиками Google или для краткости «GDE».
Программа Google Developer Experts - это глобальная сеть высококвалифицированных технологических экспертов, идейных лидеров и влиятельных лиц, которые активно поддерживают сообщества разработчиков по всему миру, делясь своими знаниями и энтузиазмом по широкому кругу тематических областей от Android до Angular до Google Assistant и Google Cloud. - и, конечно же, Google Workspace. Помня о том, что все GDE - добровольцы, которые не только свободно уделяют время поддержке других, но также помогают улучшать наши продукты, предлагая свои проницательные отзывы, тщательно тестируя новые функции, часто перед их выпуском, при этом помогая расширять как варианты использования, так и аудиторию. способ.
Если вы заинтересованы в общении и получении дополнительной информации о том, о чем говорят или работают GDE, следите за ними через их социальные каналы. Большинство GDE довольно активно делятся всем: от ежедневных советов, мероприятий до проектов с полностью открытым исходным кодом. Воспользуйтесь приведенными выше ссылками в профилях GDE или ознакомьтесь с полным каталогом GDE, чтобы познакомиться с экспертами по всем технологиям разработчиков Google.
Сообщество Google Workspace GDE также содержит несколько действительно полезных ресурсов, которые стоит посетить:
Форумы сообщества
Группы Google - groups.google.com/g/google-apps-script-community
Stack Overflow - stackoverflow.com/questions/tagged/google-apps-script
Slack- google-apps-script.slack.com
Списки
Twitter - twitter.com/i/lists/1235144368593367043
Medium Google GDE Blogs - medium.com/google-developer-experts
https://developers.google.com/community/experts/directory
Apps Script Pulse (Новости) - pulse.appsscript.info
Digital Inspiration (дополнения и инструкции) - digitalinspiration.com
Основы Google Таблиц ( инструкции по автоматизации) - benlcollins.com
Desktop Liberation (руководства по скриптам приложений) - ramblings.mcpher.com
Teacher Tech (ресурсы для EDU) - alicekeeler.com
Totally Unscripted (выставка сообщества) - sites.google.com/corp/view/totallyunscripted/home
GDE Видео
Totally Unscripted - www.youtube.com/c/TotallyUnscriptedShow
Google for Developers
Experts | Google for Developers
A global program to recognize individuals who are experts and thought leaders in one or more Google technologies. These professionals actively contribute and support the developer and startup ecosystems around the world, helping them build and launch highly…
Синхронизатор значений в ячейках расположенных на указанных листах но по одному адресу! 🔛
#JS #onEdit
function onEdit(e){
var A1Not='A2'
var sheets=['RSS','RSSs']
var ss=SpreadsheetApp.getActiveSpreadsheet()
var eNameSheet=e.range.getSheet().getName()
if (e.range.getA1Notation()==A1Not&&sheets.indexOf(eNameSheet)!=-1){
var value=e.value
console.log(e.value)
sheets.map(sh=>ss.getSheetByName(sh).getRange(A1Not).setValue(value))
}
}
P.S. Вписать свой адрес и Имена листов#JS #onEdit
Как удалить проверки данных?
sh.getRange("a4:e").clearDataValidations()
sh.getRange("a4:e").clearContent();Рекурсия в скрипте Google Apps
🎱Рекурсия очень полезна и, вероятно, первая трудная для понимания информация для начинающих программистов. Это полезно, когда вы хотите снова и снова вызывать одну и ту же функцию, но с разными значениями в качестве параметра.
Хорошо известный пример - вычисление факториала. Факториал 5 содержит факториал 4 и содержит факториал 3 и т. Д.
...
5! = 5 * 4! = 5 * 4 * 3! = 5 * 4 * 3 * 1 = 120
4! = 4 * 3! = 4 * 3 * 2! = 4 * 3 * 2 * 1 = 24
...
Таким образом, вы можете написать функцию как
Во время рекурсии в скрипте Google Apps есть небольшое ограничение . Вы можете вызвать только ❗️1000❗️ унаследованных функций.
Если ваш скрипт вызывается несколько раз, вы получите ошибку:
Превышена максимальная глубина стека.
🎱Рекурсия очень полезна и, вероятно, первая трудная для понимания информация для начинающих программистов. Это полезно, когда вы хотите снова и снова вызывать одну и ту же функцию, но с разными значениями в качестве параметра.
Хорошо известный пример - вычисление факториала. Факториал 5 содержит факториал 4 и содержит факториал 3 и т. Д.
...
5! = 5 * 4! = 5 * 4 * 3! = 5 * 4 * 3 * 1 = 120
4! = 4 * 3! = 4 * 3 * 2! = 4 * 3 * 2 * 1 = 24
...
Таким образом, вы можете написать функцию как
function factorial (n) {
если (n == 0 || n == 1) return 1;
если (f [n]> 0) return f [n];
return f [n] = n * факториал (n-1);
}
Если вы запустите factorial (5), он вызовет функцию 5 раз. Каждый новый звонок будет вставлен в другой.Во время рекурсии в скрипте Google Apps есть небольшое ограничение . Вы можете вызвать только ❗️1000❗️ унаследованных функций.
Если ваш скрипт вызывается несколько раз, вы получите ошибку:
Превышена максимальная глубина стека.
Удалим дубликаты из массива
Способ 1
позволяет что то делать перед удалением
Способ 1
var arrA3 =[1, 4, 3, 2,8,9,10,4,8,2]Способ 2
let uniq=[...new Set(arrA3)]
console.log(uniq)
сonst values =[1, 'a', 3, 2,8,9,10,'a',8,2];
function duplicates(arr) {
return Object.values(arr).reduce((acc, val) => {
acc.count[val] = (acc.count[val] || 0) + 1;
if (acc.count[val] > 1) acc.duplicates[val] = acc.count[val];
return acc;
}, { count: {}, duplicates: {} }).duplicates;
}
var dup=duplicates(values);//return { '2': 2, '8': 2, a: 2 }
var res=Object.keys(dup).reduce((t,e)=>{
var indx= t.indexOf(e)
t.splice(indx, 1)
return t
},values)
console.log(res)//[1, 3, 2, 8, 9, 10, 'a']
⁉️Способ 2 в отличии от Способа 1позволяет что то делать перед удалением
Скопируйть файл ( в том числе и файл Google Apps Script) с помощью... Google Apps script в Расшаренный ДИСК Google Drave
Вы хотите скопировать файл Google Apps Script в определенную папку на общем диске.
Для этого, как насчет следующего сценария? В этом сценарии используется следующий поток.
Скопируйте файл Google Apps Script. В это время файл создается в корневой папке.
Переместите файл GAS в определенную папку на общем диске, используя метод Files.patch из Drive API.
Пример сценария:
ОsupportsAllDrives , официальный документ гласит следующее.
Устарело - поддерживает ли запрашивающее приложение как мои диски, так и общие диски. Этот параметр будет действовать только до 1 июня 2020 года. После этого предполагается, что все приложения поддерживают общие диски.
Таким образом, с 1 июня 2020 года, даже если supportsAllDrives не используется, общий диск может быть использован.
//Мой код выглядит примерно так:Результатом, однако, является копия файла сценария приложения, но он находится в моей корневой папке на моем Google диске, а не на общем диске.
function copyFileToSharedDrive(){
var sharedDriveId = "sharedriveidcomeshere";
var sharedDrive = DriveApp.getFolderById(sharedDriveId);
var appsScriptFileId = "appsscriptfileidcomeshere";
DriveApp.getFileById(appsScriptFileId).makeCopy(sharedDrive).setName("This is a copy of the original apps script file");
}
Вы хотите скопировать файл Google Apps Script в определенную папку на общем диске.
Для этого, как насчет следующего сценария? В этом сценарии используется следующий поток.
Скопируйте файл Google Apps Script. В это время файл создается в корневой папке.
Переместите файл GAS в определенную папку на общем диске, используя метод Files.patch из Drive API.
Пример сценария:
function copyFileToSharedDrive(){
var destinationFolderId = "###"; // Please set the destination folder ID of shared Drive.
var appsScriptFileId = "###"; // Please set the GAS script ID.
var file = DriveApp.getFileById(appsScriptFileId)
var copiedFile = file.makeCopy().setName(file.getName()).getId();
Drive.Files.patch(
{title: "This is a copy of the original apps script file"},
copiedFile,
{removeParents: "root", addParents: destinationFolderId, supportsAllDrives: true}
);
}
Примечание:О
Устарело - поддерживает ли запрашивающее приложение как мои диски, так и общие диски. Этот параметр будет действовать только до 1 июня 2020 года. После этого предполагается, что все приложения поддерживают общие диски.
Таким образом, с 1 июня 2020 года, даже если supportsAllDrives не используется, общий диск может быть использован.
Создан алгоритм для «сжатия» научных статей в 238 раз - 4PDA
https://4pda.ru/2020/11/28/378712/
https://4pda.ru/2020/11/28/378712/
4PDA - Новости мира мобильных устройств
Создан алгоритм для «сжатия» научных статей в 238 раз
Очень часто при подготовке к экзаменам или обучении какой-либо дисциплине приходится читать десятки научных статей и книг. Это сотни и тысячи страниц. Американские исследователи создали систему на основе ИИ, способную сократить даже самый внушительный многотомник…
Расстояния Левенштейна(Степень похожести слов)
Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) — метрика, измеряющая разность между двумя последовательностями символов. Она определяется как минимальное количество односимвольных операций (а именно вставки, удаления, замены), необходимых для превращения одной последовательности символов в другую. В общем случае, операциям, используемым в этом преобразовании, можно назначить разные цены. Широко используется в теории информации и компьютерной лингвистике.
Решения
Ускорение расчета расстояния Левенштейна
Автомат Левенштейна
Сбалансированное двоичное дерево поиска (BST) (поиск, удаление, InOrder, PreOrder, PostOrder, DepthFirst, BreadthFirst, BalanceTree)
Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) — метрика, измеряющая разность между двумя последовательностями символов. Она определяется как минимальное количество односимвольных операций (а именно вставки, удаления, замены), необходимых для превращения одной последовательности символов в другую. В общем случае, операциям, используемым в этом преобразовании, можно назначить разные цены. Широко используется в теории информации и компьютерной лингвистике.
Решения
Ускорение расчета расстояния Левенштейна
Автомат Левенштейна
Сбалансированное двоичное дерево поиска (BST) (поиск, удаление, InOrder, PreOrder, PostOrder, DepthFirst, BreadthFirst, BalanceTree)
Wikipedia
Расстояние Левенштейна
Расстояние Левенштейна (редакционное расстояние, дистанция редактирования) — метрика, измеряющая по модулю разность между двумя последовательностями символов. Она определяется как минимальное количество односимвольных операций (а именно вставки, удаления…
image_2020-12-22_14-35-11.png
42.1 KB
Code Generator for HTTP Requests
.
Быстрый конструктор запросов для
.
Быстрый конструктор запросов для
UrlFetchApp с генерацией минимального кода функцииForwarded from Google Apps & API. Вопросы и задачи
VK
Google Apps Script
Мигрируете с Rhino на V8? Возможно, вам поможет ассистент миграции на основе открытой библиотеки lebab https://script.google.com/macros/s/AKfycbzlO8quQeL5pmWsw6s-5IvR0mANl4hCx2DwsIJi/exec Преимущество приложения в том, что оно уже настроено на модули Google…