Самый простой способ получить файл ID из URL на Google Apps Script
Источник
Для Python:
Для фиксированной длины google drive IDs вы можете использовать это:
Другой подход без использования фиксированной длины, но вместо этого предшествующих паттернов:
Источник
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)coderoad.ru
Самый простой способ получить файл ID из URL на Google Apps Script
- CodeRoad
- CodeRoad
DriveApp действительно отсутствует getFileByUrl (а также папка, если на то пошло). Возможно, вам захочется открыть запрос на улучшение в трекере проблем сценариев приложений . Но то, что я делаю в...
Forwarded from DidacticСardsBot
Как проверить, редактирует ли текущее сообщение ответ или новый ответ
Источник:
В событии отправки формы Google Form нет поля, которое могло бы помочь узнать, является ли ответ новым или измененным ответом. Как уже сказал Сэнди в комментариях к вопросам, классы и методы Form Servicer, а также значения ответов не включают в себя что-то, что могло бы помочь в этом.
Вышеупомянутое можно использовать для обновления столбца, в котором будет храниться счетчик версий. Если соответствующая ячейка пуста, то ответ представляет собой новый ответ, в противном случае - это изменение ответа.
Следующий сценарий должен быть привязан к электронной таблице, которая получает ответы формы. Для этого требуется устанавливаемый триггер отправки формы. Другие инструкции по его адаптации включены в комментарии к сценарию.
••••••••••
Обсудить:
Источник:
В событии отправки формы 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);
}••••••••••
Обсудить:
Stack Overflow
How to check if current submission is editing response or a new response
I am working with google forms via app script. I want to determine if the current form that is being submitted is in edit mode or a new response? How can I check this in the onSubmit event.
If ye...
If ye...
6 Fixes to Google Drive Unable to Open File at This Time
https://www.cbackup.com/articles/google-drive-unable-to-open-file.html
https://www.cbackup.com/articles/google-drive-unable-to-open-file.html
Cbackup
6 Fixes to Google Drive Unable to Open File at This Time
Get Google Drive “Unable to open file at this time” error? Read this article to learn 6 solutions to solve the Google Drive files not opening issue quickly.
image_2021-09-08_10-14-09.png
21.8 KB
Меня постигла печаль...
Что ж будем бороться...
Что ж будем бороться...
Forwarded from Volond Apps (volond)
/*
Использование функций генератора JavaScript для диапазонов
Создание генератора диапазонов,подобного диапазонам Python или Ruby
*/
Использование функций генератора JavaScript для диапазонов
Создание генератора диапазонов,подобного диапазонам Python или Ruby
*/
const range = (end, start = 0, step = 1) => {
function* generateRange() {
let x = start - step;
while(x < end - step) yield x += step;
}
return {
[Symbol.iterator]: generateRange
};
}
console.log([...range(7)]); // [0, 1, 2, 3, 4, 5, 6]
for (let i of range(8, 2, 2)) console.log(i); // Logs: 2, 4, 6
#JS #function #array
Volond Apps
/* Использование функций генератора JavaScript для диапазонов Создание генератора диапазонов,подобного диапазонам Python или Ruby */ const range = (end, start = 0, step = 1) => { function* generateRange() { let x = start - step; while(x <…
Forwarded from Google Таблицы
Небольшая статья про api, cookie, авторизацию на минималках
Когда вы вводите свой логин и пароль на сайте через браузер – вы получаете cookie, cookie помогают при перезагрузке страницы или при входе через некоторое время не авторизовываться заново, а использовать уже созданную сессию.
В материале от Романа Игнатова простой пример того, как на сайте без API через GAS-скрипты можно получить cookie и дальше использовать их открывая страницы, которые доступны только после авторизации пользователям.
Кажется, что это первый материал на эту тему на русском 🔥
ignatov-script.blogspot.com/2021/09/api.html
P. S. "Авторизовываться", с помощью логина и пароля в этом примере не требуется, но если для вашего сайта это необходимо – формируйте post-запрос на страницу авторизации, в payload передавайте логин и пароль и забирайте cookie уже из headers этого запроса
Когда вы вводите свой логин и пароль на сайте через браузер – вы получаете cookie, cookie помогают при перезагрузке страницы или при входе через некоторое время не авторизовываться заново, а использовать уже созданную сессию.
В материале от Романа Игнатова простой пример того, как на сайте без API через GAS-скрипты можно получить cookie и дальше использовать их открывая страницы, которые доступны только после авторизации пользователям.
Кажется, что это первый материал на эту тему на русском 🔥
ignatov-script.blogspot.com/2021/09/api.html
P. S. "Авторизовываться", с помощью логина и пароля в этом примере не требуется, но если для вашего сайта это необходимо – формируйте post-запрос на страницу авторизации, в payload передавайте логин и пароль и забирайте cookie уже из headers этого запроса
Вопрос
Добрый день. В ячейке стоит следующая формула =23+45+76+87+98. Как в другой ячейке вывести количество чисел? 5. Пробовал LEN. Работает только с текстами, к сожалению. =1+LEN(C15)-LEN(SUBSTITUTE(C15;"+";"")) - не работает
Ответ
Добрый день. В ячейке стоит следующая формула =23+45+76+87+98. Как в другой ячейке вывести количество чисел? 5. Пробовал LEN. Работает только с текстами, к сожалению. =1+LEN(C15)-LEN(SUBSTITUTE(C15;"+";"")) - не работает
Ответ
=COUNTA(split(FORMULATEXT(B49);"+-*/";1;true))Поделиться или Позвонить в СоцСетях через Ссылку
Таблица
Таблица
Google Docs
Поделиться или Позвонить в СоцСетях через Ссылку
Все
Текст Ссылки,Что шарим,baseURL,Кликабельная ссылка
<div class="col-md-12" style="margin: 50px 20px 50px 20px;">
<div class="share-btns">
<a class="mail" onclick="var wnd = window.open('mailto:?subject=Ссылка, сохраненная в SYNAPS&body=' + global_share_url…
Текст Ссылки,Что шарим,baseURL,Кликабельная ссылка
<div class="col-md-12" style="margin: 50px 20px 50px 20px;">
<div class="share-btns">
<a class="mail" onclick="var wnd = window.open('mailto:?subject=Ссылка, сохраненная в SYNAPS&body=' + global_share_url…
Forwarded from DidacticСardsBot
Авторизация в Google Apps Script
Источник:
В 99% случаев авторизация в скрипте Google Apps чрезвычайно проста. Когда пользователь выполняет свой сценарий, он запускает его как себя с соответствующими областями авторизации. Исключения составляют:
Устанавливаемые триггеры, запускаемые от имени их автора
Веб-приложения, которые также могут запускаться от имени их автора в зависимости от настроек развертывания.
Однако что, если вам нужно предоставить своему приложению больше прав, чем те, которые будут иметь ваши предполагаемые пользователи?
••••••••••
Обсудить:
Источник:
В 99% случаев авторизация в скрипте Google Apps чрезвычайно проста. Когда пользователь выполняет свой сценарий, он запускает его как себя с соответствующими областями авторизации. Исключения составляют:
Устанавливаемые триггеры, запускаемые от имени их автора
Веб-приложения, которые также могут запускаться от имени их автора в зависимости от настроек развертывания.
Однако что, если вам нужно предоставить своему приложению больше прав, чем те, которые будут иметь ваши предполагаемые пользователи?
••••••••••
Обсудить:
Medium
How to Use Service Accounts and OAuth2 in Google Apps Script
Give your scripts privileges that your users don’t have.
Подборка Google Logo для оформления
Источник
Источник
Google Docs
Google Logo
Sheets
=IMPORTXML("https://developers.google.com/apps-script","//img/@src")
https://www.gstatic.com/images/branding/product/2x/apps_script_48dp.png,apps script,APPS SCRIPT
https://fonts.gstatic.com/s/i/productlogos/sheets_2020q4/v5/web-48dp/logo_sheets_…
=IMPORTXML("https://developers.google.com/apps-script","//img/@src")
https://www.gstatic.com/images/branding/product/2x/apps_script_48dp.png,apps script,APPS SCRIPT
https://fonts.gstatic.com/s/i/productlogos/sheets_2020q4/v5/web-48dp/logo_sheets_…
Forwarded from Michael Smirnov
QUERY с группировкой:=QUERY({'Лист1'!A2:G}; "SELECT Col3, Col4, Col5, SUM(Col6), Col7 WHERE Col1 IS NOT NULL GROUP BY Col3, Col4, Col5, Col7 LABEL SUM(Col6) ''"; 1)https://developers.google.com/chart/interactive/docs/querylanguage
Forwarded from Alexander Ivanov
Решение задачи по открытию вкладки/окна браузера с из Google Apps Script https://googleappsscriptrc.blogspot.se/2018/04/how-to-open-url.html
googleappsscriptrc.blogspot.co.uk
Как открыть ссылку с помощью Google Apps Script?
Часто возникает задача, в которой требуется по результатам работы скрипта открыть ссылку в новом окне/вкладке браузера. В Google Apps Sc...
48 полноценных бесплатных книг для программистов (happy developer's day)
Источник
Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию (ну и в целом ресурсом с ними). Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг:
.NET
Алгоритмы
Android
iOS
Angular
C
C++
C#
JS
Linux
Python
Источник
Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию (ну и в целом ресурсом с ними). Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг:
.NET
Алгоритмы
Android
iOS
Angular
C
C++
C#
JS
Linux
Python
Хабр
48 полноценных бесплатных книг для программистов (happy developer's day)
Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию (ну и в целом ресурсом с ними). Все они полезные, уровень скорее профессиональный, хотя и для...
Forwarded from Максим Стоянов
Коллеги всем привет!
Давно меня беспокоило отсутствие URL и URLSearchParams
Как-то давно я делал себе на быструю руку парсер url.
Теперь же решил сделать нормальную либу.
Прошу посетить не равнодушным 🙂
Id
Код:
https://script.google.com/home/projects/1QCIhfEvmPkdVnri2LurMTLDAxvU4p2xAlZvmBcTKeDgfNJtnXyXezlsq/edit
Мои тесты:
https://script.google.com/home/projects/1Q7qUFJrWAjsCKaxd1YP9xqtx-q_fAPWyMcO0BuqkenSV7ILug7tnuvxr/edit
Давно меня беспокоило отсутствие URL и URLSearchParams
Как-то давно я делал себе на быструю руку парсер url.
Теперь же решил сделать нормальную либу.
Прошу посетить не равнодушным 🙂
Id
1QCIhfEvmPkdVnri2LurMTLDAxvU4p2xAlZvmBcTKeDgfNJtnXyXezlsqКод:
https://script.google.com/home/projects/1QCIhfEvmPkdVnri2LurMTLDAxvU4p2xAlZvmBcTKeDgfNJtnXyXezlsq/edit
Мои тесты:
https://script.google.com/home/projects/1Q7qUFJrWAjsCKaxd1YP9xqtx-q_fAPWyMcO0BuqkenSV7ILug7tnuvxr/edit
Google
Apps Script – Google Apps Script
Apps Script is a rapid application development platform that makes it fast and easy to create business applications that integrate with G Suite.
Forwarded from DidacticСardsBot
Введение в GraphQL: что это за язык и как использовать его под Android
Источник:
клиенту при работе с GraphQL API совершенно не важно, откуда поступают данные, которые он запрашивает. Он просто делает запрос в нужном ему объеме, а сервер GraphQL возвращает результат. Поэтому можно представить, что схема — это контракт между API и клиентом, так как, прежде чем клиент выполнит какой-либо запрос, этот запрос валидируется в соответствии со схемой данного API.
••••••••••
Обсудить:
Источник:
клиенту при работе с GraphQL API совершенно не важно, откуда поступают данные, которые он запрашивает. Он просто делает запрос в нужном ему объеме, а сервер GraphQL возвращает результат. Поэтому можно представить, что схема — это контракт между API и клиентом, так как, прежде чем клиент выполнит какой-либо запрос, этот запрос валидируется в соответствии со схемой данного API.
••••••••••
Обсудить:
DOU
Введение в GraphQL: что это за язык и как использовать его под Android
Android-разработчик Мария Агеева делится опытом работы с GraphQL. Будет интересно всем, кто еще не знаком с этим языком, собирается его использовать или только начал интеграцию GraphQL в проект. Также в статье будет кратко описана работа с GraphQL для платформы…
Forwarded from Буратино
https://habr.com/ru/company/domclick/blog/578822/?
From:
Способы обмена знаниями в компаниях / Блог компании ДомКлик / Хабр
https://habr.com/ru/company/domclick/blog/578822/?
From:
Способы обмена знаниями в компаниях / Блог компании ДомКлик / Хабр
https://habr.com/ru/company/domclick/blog/578822/?
Хабр
Способы обмена знаниями в компаниях
Зачем «шарить» знания? Вместе с ростом кодовой базы растёт и порог входа, который надо преодолеть новичкам для полноценного погружения в проект. Также возникает ситуация, когда опытные сотрудники не...