Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Forwarded from PushAll
Хабрахабр:Google Sheets API + Python. Чтение и запись с Сервисным Аккаунтом Google Cloud
Google Sheet и Sheets API - классный (простой, бесплатный и универсальный) способ организовать хранение и анализ данных получаемых от своего сервиса. При условии что этих данных не то чтобы очень много и поступают они не то чтобы очень часто. У меня таких задач хватает и решаю я их либо
Forwarded from Провод
⌨️ Шпаргалка по jQuery

jQuery — это библиотека на JavaScript, которая предназначена для упрощения работы с HTML-элементами в браузере. В этой шпаргалке собраны все её основные элементы, что сэкономит вам немало времени, которое могло бы уйти на поиск в Google.

#шпаргалка
Скрипт для поиска каналов в Telegram

Думаю, не секрет, что в телеграме как такового поиска нет. Глобальный поиск выдает лишь 3 результата, и то, по какому-то конкретному запросу. Чтобы найти что-то интересное, необходимо искать это в интернете в каких-то каталогах.

Предлагаю ещё один способ решения данной проблемы.
Мы написали скрипт для поиска схожих каналов. Как это работает? Вы скрипту даете список каналов которые вам нравятся, он проходится по каждому и находим в них упоминания других каналов. Так можно найти много каналов схожей тематики.

Подробнее о том как скачать и запустить эту махину можно прочитать в этой статье.

Ниже представлена демонстрация работы этого чуда 😁
Обязательно отпишитесь в коменты, если у вас все вышло))))
#ПроектОтКанала
Volond Apps pinned «https://xfanatical.com/blog/print-google-sheet-as-pdf-using-apps-script/»
Forwarded from Михаил Х
Я для себя установил порог с строках. Где-то после 100.000 строк меняю бд на что-то другое. Даже замена spreadsheetapp на sheet api не помогает побороть глюки, разве что чуть ускоряет работу.
Из бд пока пробовал bigquery, firebase, cloud sql - все замечательно работают со скриптами.
Forwarded from volond
function joingrp(range){
var o={}
for (row of range){
if (!o[row[0]]) {
o[row[0]]=[]
}
o[row[0]].push(row[1])
}
return Object.keys(o).map(key=>[key,o[key].join("\n")])

}
Формулы Google Maps для Google Таблиц
Источник:
Используйте формулы Google Maps в Google Sheets, чтобы рассчитывать расстояния, время в пути, получать маршруты проезда, искать почтовые индексы с обратным геокодированием и многое другое!
1.Рассчитывайте расстояния между двумя городами или любыми адресами.
2.Рассчитайте время в пути (пешком, на машине или велосипеде) между двумя точками.
3.Получите координаты широты и долготы любого адреса на Google Maps.
4.Используйте обратное геокодирование, чтобы найти почтовый адрес по координатам GPS.
5.Распечатайте маршруты проезда между любыми точками на земле.
6.Получите адрес из самого почтового индекса.

P.S. Совет: повысьте производительность за счет кеширования результатов

••••••••••
Обсудить:
Самый простой способ получить файл ID из URL на Google Apps Script
Источник
function getIdFromUrl(url) {
return url.match(/[-\w]{25,}/);
}


Но не все так просто с ссылками именно на файлы на диске
Для Python:

Для фиксированной длины google drive IDs вы можете использовать это:

regex = "([\w-]){33}|([\w-]){19}"
match = re.search(regex,url)
Google drive использует 33 символа для обычных дисков и 19 символов для командных дисков

Другой подход без использования фиксированной длины, но вместо этого предшествующих паттернов:

regex = "(?<=/folders/)([\w-]+)|(?<=%2Ffolders%2F)([\w-]+)|(?<=/file/d/)([\w-]+)|(?<=%2Ffile%2Fd%2F)([\w-]+)|(?<=id=)([\w-]+)|(?<=id%3D)([\w-]+)"

match = re.search(regex,url)
Forwarded from DidacticСardsBot
Как проверить, редактирует ли текущее сообщение ответ или новый ответ

Источник:



В событии отправки формы Google Form нет поля, которое могло бы помочь узнать, является ли ответ новым или измененным ответом. Как уже сказал Сэнди в комментариях к вопросам, классы и методы Form Servicer, а также значения ответов не включают в себя что-то, что могло бы помочь в этом.


function onFormSubmit(e){
var response = e.range;
Logger.log(response.getRow());
}


Вышеупомянутое можно использовать для обновления столбца, в котором будет храниться счетчик версий. Если соответствующая ячейка пуста, то ответ представляет собой новый ответ, в противном случае - это изменение ответа.


Следующий сценарий должен быть привязан к электронной таблице, которая получает ответы формы. Для этого требуется устанавливаемый триггер отправки формы. Другие инструкции по его адаптации включены в комментарии к сценарию.


/*
*
* Global Variables
*
*/

/*
* Sheet name used as destination of the form responses
*/
var sheetName = 'Form Responses';

/*
* Name of the column to be used to hold the response revision counter
* It should match exactly the header of the related column,
* otherwise it will do nothing.
*/
var revisionsColumn = 'Rev';

/*
* Responses starting row
*/
var startRow = 2;

function setRevisionCounts(e){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var revisionsIndex = headers[0].indexOf(revisionsColumn);
var data = sheet.getDataRange().getValues();
var response = e.range;
var rowIndex = response.getRow()-1;
var rev = data[rowIndex][revisionsIndex]+1;
sheet.getRange(rowIndex+1, revisionsIndex+1).setValue(rev);
}

••••••••••
Обсудить: