Forwarded from Max Makhrov
Друзья, привет!
Сегодня я обнаружил, что в выпадающие списки можно вставлять не только абсолютные, но и относительные ссылки.
Это просто 🔥!
Дает возможность сделать 2-мерные многострочные связанные выпадающие списки без скриптов.
Демо:
https://docs.google.com/spreadsheets/d/1Vuq9_jJHgLJ7fe6yF0EZEERlo0LTChXezhqHjLUwmaY/copy
Сегодня я обнаружил, что в выпадающие списки можно вставлять не только абсолютные, но и относительные ссылки.
Это просто 🔥!
Дает возможность сделать 2-мерные многострочные связанные выпадающие списки без скриптов.
Демо:
https://docs.google.com/spreadsheets/d/1Vuq9_jJHgLJ7fe6yF0EZEERlo0LTChXezhqHjLUwmaY/copy
Управляйте защищенными диапазонами и листами в Google Таблицах с помощью Apps Script
Итак, давайте посмотрим, как это сделать в с помощью #GAS.
Допустим, вы хотите запретить кому-либо, кроме себя, редактировать ячейки A1: B10:
Итак, давайте посмотрим, как это сделать в с помощью #GAS.
Допустим, вы хотите запретить кому-либо, кроме себя, редактировать ячейки A1: B10:
// Protect range A1:B10, then remove all other users from the list of editors.Или, может быть, вы хотите удалить все защиты диапазона во всей электронной таблице:
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('A1:B10');
var protection = range.protect().setDescription('Sample protected range');
// Ensure the current user is an editor before removing others. Otherwise, if the user's edit
// permission comes from a group, the script will throw an exception upon removing the group.
var me =Session.getEffectiveUser();protection.addEditor(me);protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) { protection.setDomainEdit(false);
}
// Remove all range protections in the spreadsheet that the user has permission to edit.Или, возможно, вы хотите защитить весь лист, но вырезать в нем небольшое отверстие - незащищенный диапазон на защищенном листе, - который другие все еще могут редактировать:
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
if (protection.canEdit()) {
protection.remove();
}
}
// Protect the active sheet except B2:C5,
// then remove all other users from the list of editors.
var sheet = SpreadsheetApp.getActiveSheet();
var protection = sheet.protect().setDescription('Sample protected sheet');
var unprotected = sheet.getRange('B2:C5');
protection.setUnprotectedRanges([unprotected]);
// Ensure the current user is an editor before removing others.
// Otherwise, if the user's edit permission comes from a group,
// the script will throw an exception upon removing the group.
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()){
protection.setDomainEdit(false);
}«Динамика роста лени интернет-поколения» или «Давай я поищу за тебя»
Доброго времени суток, дорогие друзья, знакомые, читатели, почитатели и прочие личности.
С 2008-го года, а именно с даты существования моих "Заметок Сис.Админа" я постоянно занимаюсь поддержкой пользователей не только в реальной жизни, но и в виртуальной, т.е через форму обратной связи.
Ежедневно я получаю десятки запросов через эту форму по разному рода проблемам, связанным с компьютерами и сопутствующими устройствами из мира IT. С появлением форума в 2009-ом разного рода запросов стало и того больше. На основе этого (и работы как таковой) я имею перед глазами достаточно объемную статистику по тому, что интересует пользователей, с какими проблемами они сталкиваются и как пытаются их решить.
И вот что я заметил.
Чем дальше тем, собственно, больше я замечаю одну неприятную тенденцию, - пользователи в край обленились искать информацию по проблемам, которые решить нужно непосредственно им. Нет, я понимаю, что с ростом интернета, конечно, просто больше народу в него попадает (в том числе не компетентного или очень молодого), но динамика напрягает и, как по мне, так всё чаще и чаще люди занимаются откровенной бредо-ленно-ерундистикой.
И, если раньше проекты "давай я поищу за тебя" вызывали у меня только улыбку, то теперь они мне кажутся как никогда актуальными. Мало того, что люди просто не хотят искать информацию самостоятельно (ну, бывает, да, что человек не очень опытен и не может сформулировать запрос максимально эффективно), но проблема в другом, - им лень её искать.
Доходит до абсурда, когда они видят статью со всеми подробностями и рекомендациями, разжеванную до безумия и даже с примерами чего купить или куда нажать конкретно в их случае.. И тут же через форму (или в комментариях) спрашивают то, что написано выше прямым текстом. Т.е им лень читать (я уж не говорю про необходимость думать), но зато есть время написать бессмысленный, с точки зрения разума и логики, вопрос. Причем кидаешь им ответ, цитирующий статью и они искренне благодарят. Спрашивается, собственно, что мешало прочитать, а не тратить своё и чужое время на вопрос-ответ.
Я уж не говорю о том, что решения и ответы на вопросы, которые, быть может не описаны в статьях на том же sonikelf.ru, находятся по запросу из их же письма в первой же ссылке в любом поисковике. Ладно, бог с ним. Но доходит не просто до абсурда, а до бреда, в духе: лень читать (коммент: перескажите кратко содержание), лень смотреть (коммент: перескажите, что делать?), лень искать, лень-лень лень. Я даже процитирую одного из нашего подписчиков в ВК: "Лень смотреть...лень читать.. лень тестировать...неужели вам нужно чтобы все прям в ухо вливали?" (с). По мне так выходит, исходя из написанного выше, видимо лучше, чтобы за них прямо всё и сразу делали, а не писали какие-то там статьи и видеоролики.
Такой подход меня это поражает чем дальше, - тем, собственно, больше. Я понимаю, что это звучит как некое старческое брюзжание, но, повторюсь, что опираясь на вышеупомянутую статистику, динамика имеет место быть и причем не в лучшую сторону (хотя, казалось бы, с развитием интернета должно быть как раз наоборот, ибо статей-роликов-советов всех вариаций на любые темы становится ежечасно больше и больше, - успевай выбирать).
Оставлю эту заметку без выводов, - пусть их каждый делает сам.
Такие дела.
#book
Доброго времени суток, дорогие друзья, знакомые, читатели, почитатели и прочие личности.
С 2008-го года, а именно с даты существования моих "Заметок Сис.Админа" я постоянно занимаюсь поддержкой пользователей не только в реальной жизни, но и в виртуальной, т.е через форму обратной связи.
Ежедневно я получаю десятки запросов через эту форму по разному рода проблемам, связанным с компьютерами и сопутствующими устройствами из мира IT. С появлением форума в 2009-ом разного рода запросов стало и того больше. На основе этого (и работы как таковой) я имею перед глазами достаточно объемную статистику по тому, что интересует пользователей, с какими проблемами они сталкиваются и как пытаются их решить.
И вот что я заметил.
Чем дальше тем, собственно, больше я замечаю одну неприятную тенденцию, - пользователи в край обленились искать информацию по проблемам, которые решить нужно непосредственно им. Нет, я понимаю, что с ростом интернета, конечно, просто больше народу в него попадает (в том числе не компетентного или очень молодого), но динамика напрягает и, как по мне, так всё чаще и чаще люди занимаются откровенной бредо-ленно-ерундистикой.
И, если раньше проекты "давай я поищу за тебя" вызывали у меня только улыбку, то теперь они мне кажутся как никогда актуальными. Мало того, что люди просто не хотят искать информацию самостоятельно (ну, бывает, да, что человек не очень опытен и не может сформулировать запрос максимально эффективно), но проблема в другом, - им лень её искать.
Доходит до абсурда, когда они видят статью со всеми подробностями и рекомендациями, разжеванную до безумия и даже с примерами чего купить или куда нажать конкретно в их случае.. И тут же через форму (или в комментариях) спрашивают то, что написано выше прямым текстом. Т.е им лень читать (я уж не говорю про необходимость думать), но зато есть время написать бессмысленный, с точки зрения разума и логики, вопрос. Причем кидаешь им ответ, цитирующий статью и они искренне благодарят. Спрашивается, собственно, что мешало прочитать, а не тратить своё и чужое время на вопрос-ответ.
Я уж не говорю о том, что решения и ответы на вопросы, которые, быть может не описаны в статьях на том же sonikelf.ru, находятся по запросу из их же письма в первой же ссылке в любом поисковике. Ладно, бог с ним. Но доходит не просто до абсурда, а до бреда, в духе: лень читать (коммент: перескажите кратко содержание), лень смотреть (коммент: перескажите, что делать?), лень искать, лень-лень лень. Я даже процитирую одного из нашего подписчиков в ВК: "Лень смотреть...лень читать.. лень тестировать...неужели вам нужно чтобы все прям в ухо вливали?" (с). По мне так выходит, исходя из написанного выше, видимо лучше, чтобы за них прямо всё и сразу делали, а не писали какие-то там статьи и видеоролики.
Такой подход меня это поражает чем дальше, - тем, собственно, больше. Я понимаю, что это звучит как некое старческое брюзжание, но, повторюсь, что опираясь на вышеупомянутую статистику, динамика имеет место быть и причем не в лучшую сторону (хотя, казалось бы, с развитием интернета должно быть как раз наоборот, ибо статей-роликов-советов всех вариаций на любые темы становится ежечасно больше и больше, - успевай выбирать).
Оставлю эту заметку без выводов, - пусть их каждый делает сам.
Такие дела.
#book
Заметки Сис.Админа
Обзоры программ, устройств, сайтов. Статьи про информационную безопасность и IT-технологии. Советы по настройке и оптимизации компьютера Windows и Linux.
function test (value){
var regExp = /^([А-ЯA-Z]|[А-ЯA-Z][\x27а-яa-z]{1,}|[А-ЯA-Z][\x27а-яa-z]{1,}\-([А-ЯA-Z][\x27а-яa-z]{1,}|(оглы)|(кызы)))\040[А-ЯA-Z][\x27а-яa-z]{1,}(\040[А-ЯA-Z][\x27а-яa-z]{1,})?$/
return regExp.test(value)
} ••••••••••
#JS
Тема:Отладка расширений
Источник:
Опубликован в 18 Сентября 2012г., Вторник • ОбновленоВторник, 21 июля 2020 г.
Содержание
Скоро выйдет Manifest V3! См. Документацию по MV3 для получения дополнительной информации и подумайте о разработке вашего расширения в MV3.
Расширения могут использовать те же преимущества отладки, которые Chrome DevTools предоставляет для веб-страниц, но они несут уникальные свойства поведения. Чтобы стать ведущим отладчиком расширений, необходимо понимать эти особенности поведения, то, как компоненты расширений взаимодействуют друг с другом и где устранять ошибки. Этот учебник дает разработчикам базовое представление об отладке расширений.
••••••••••
#JS
Источник:
Опубликован в 18 Сентября 2012г., Вторник • ОбновленоВторник, 21 июля 2020 г.
Содержание
Скоро выйдет Manifest V3! См. Документацию по MV3 для получения дополнительной информации и подумайте о разработке вашего расширения в MV3.
Расширения могут использовать те же преимущества отладки, которые Chrome DevTools предоставляет для веб-страниц, но они несут уникальные свойства поведения. Чтобы стать ведущим отладчиком расширений, необходимо понимать эти особенности поведения, то, как компоненты расширений взаимодействуют друг с другом и где устранять ошибки. Этот учебник дает разработчикам базовое представление об отладке расширений.
••••••••••
#JS
Chrome Developers
Debugging extensions - Chrome Developers
Step-by-step instructions on how to debug Chrome Extensions.
Понимаем немедленно вызываемые функции IIFE и немного больше
•
Понимание принципов работы функций и последующее осознание того, как их использовать при написании современного, понятного JavaScript’а — является необходимым критерием для становления JavaScript ниндзи.
Один из часто используемых паттернов, связанных с функциями имеет причудливое название: Immediately-invoked Function Expression или по-русски Немедленно вызываемое функциональное выражение. Или, как с любовью говорят в народе — IIFE, произнося, как “Ифи”.
Перед тем, как понять, что такое IIFE и зачем они нам вообще нужны, стоит быстренько рассмотреть несколько основополагающих концептов функций в JavaScript.
Читать далее •••
#book #JS
•
Понимание принципов работы функций и последующее осознание того, как их использовать при написании современного, понятного JavaScript’а — является необходимым критерием для становления JavaScript ниндзи.
Один из часто используемых паттернов, связанных с функциями имеет причудливое название: Immediately-invoked Function Expression или по-русски Немедленно вызываемое функциональное выражение. Или, как с любовью говорят в народе — IIFE, произнося, как “Ифи”.
Перед тем, как понять, что такое IIFE и зачем они нам вообще нужны, стоит быстренько рассмотреть несколько основополагающих концептов функций в JavaScript.
Читать далее •••
#book #JS
В GOOGLE ТАБЛИЦАХ ДОБАВЛЕНА БЫСТРАЯ НАВИГАЦИЯ ПО ЯЧЕЙКАМ И ДИАПАЗОНАМ С НОВОЙ ФУНКЦИЕЙ «ПОЛЕ ИМЕНИ».
Теперь все меняется благодаря новому обновлению службы, которое добавляет «поле имени диапазона», которое позволит вам быстро переходить непосредственно к координатам и именованным диапазонам на листе! Раньше все, что вы могли сделать, чтобы перейти к выделенной активной ячейке или диапазону, - это перейти к ней вручную - говорите о неэффективности.
Новый параметр находится в верхнем левом углу листа чуть выше ячейки A1 и содержит раскрывающееся меню для быстрого доступа, управления и создания новых именованных диапазонов. Я не понимаю, почему Google так долго добавлял то, чего так отчаянно хотели опытные пользователи, но, тем не менее, это долгожданное дополнение.
Вы можете получить его прямо сейчас, и если вы его еще не видите, он будет представлен вам в течение следующих нескольких дней. Если у вас есть домен с запланированным выпуском, вы можете ожидать его в течение двух недель с 25 января 2021 года. Я рад сообщить, что это еще одна функция Workspace, которая также будет доступна для обычных учетных записей Google, не связанных с Workspace!
•
Теперь все меняется благодаря новому обновлению службы, которое добавляет «поле имени диапазона», которое позволит вам быстро переходить непосредственно к координатам и именованным диапазонам на листе! Раньше все, что вы могли сделать, чтобы перейти к выделенной активной ячейке или диапазону, - это перейти к ней вручную - говорите о неэффективности.
Новый параметр находится в верхнем левом углу листа чуть выше ячейки A1 и содержит раскрывающееся меню для быстрого доступа, управления и создания новых именованных диапазонов. Я не понимаю, почему Google так долго добавлял то, чего так отчаянно хотели опытные пользователи, но, тем не менее, это долгожданное дополнение.
Вы можете получить его прямо сейчас, и если вы его еще не видите, он будет представлен вам в течение следующих нескольких дней. Если у вас есть домен с запланированным выпуском, вы можете ожидать его в течение двух недель с 25 января 2021 года. Я рад сообщить, что это еще одна функция Workspace, которая также будет доступна для обычных учетных записей Google, не связанных с Workspace!
•
Тема:КАЛЕНДАРЬ GOOGLE ПОЛУЧАЕТ АВТОНОМНЫЙ РЕЖИМ ДЛЯ WORKSPACE, ЧТО ЕЩЕ РАЗ НАМЕКАЕТ НА ПОДДЕРЖКУ PWA
Источник:
••••••••••
#JS
Источник:
••••••••••
#JS
Chrome Unboxed
Google Calendar gains offline mode for Workspace, further hinting at PWA support
A major benefit of running the Google Calendar Play Store app on your Chromebook is that you have the ability to view events without an internet connection. It can make all the difference should your wireless drop off or if you’re traveling. With the rise…
Тема:Грядут новые возможности
Источник:
Большой, отсутствующей функцией PWA является возможность разработчиков вводить покупки в приложениях через Play Store так же, как это могут делать собственные приложения для Android. Разработчики приложений смогут использовать новый API цифровых товаров с Google Play с помощью тестов под флагом в Chrome OS 88 и с полным запуском в Chrome OS 89 (релиз запланирован на март). Эти дополнительные API-интерфейсы позволят такие вещи, как внутриигровые платежи и подписки одним щелчком мыши, обеспечивая при этом тот же опыт для конечных пользователей, с которым они знакомы из процесса выставления счетов Google Play. Это также включает в себя возможность для пользователя сохранять кредиты и информацию об оплате.
••••••••••
#JS
Источник:
Большой, отсутствующей функцией PWA является возможность разработчиков вводить покупки в приложениях через Play Store так же, как это могут делать собственные приложения для Android. Разработчики приложений смогут использовать новый API цифровых товаров с Google Play с помощью тестов под флагом в Chrome OS 88 и с полным запуском в Chrome OS 89 (релиз запланирован на март). Эти дополнительные API-интерфейсы позволят такие вещи, как внутриигровые платежи и подписки одним щелчком мыши, обеспечивая при этом тот же опыт для конечных пользователей, с которым они знакомы из процесса выставления счетов Google Play. Это также включает в себя возможность для пользователя сохранять кредиты и информацию об оплате.
••••••••••
#JS
Chrome Unboxed
PWAs on the Play Store for Chromebooks getting a big upgrade for in-app payments
PWAs being delivered in the Play Store for Chromebooks are few and far between at this point. This entire thing is a new effort that hasn’t fully been rolled out quite yet, but is on the way soon for more and more app developers. This effort sees Progressive…
Forwarded from Max Makhrov
Спасибо, Михаил!
Хочу вернуться к теме $$ в проверке данных по диапазону.
Что поменялось.
В правилах проверки данных появилась возможность делать относительные ссылки. Если скопировать выпадающий список со ссылкой на диапазон, то изменение диапазона будет происходить по тем же правилам, что и внутри формул.
Еще в проверке можно использовать открытый диапазон:
B2:2 — начни с B2 и закончи последней колонкой 2-ой строки.
Почему я считаю, что это 🔥.
- если у вас таблица в 1000+ строк, то менять ссылки в каждой проверке данных очень долго. Вам придется 1000+ раз зайти в условное форматирование и поменять ссылку. Я смотрел статью (https://www.xelplus.com/google-sheets-multiple-dependent-dropdown-lists/), в котором MVP предлагает нам сделать это вручную. Мне кажется, что вручную — не вариант, но это "удобно" было делать скриптом. Теперь скрипт вообще не нужен. Просто копируете диапазон с *относительной ссылкой* вниз.
Ниже еще примеры. Относительные ссылки для копирования списков:
Примеры для связанных списков.
№1
2-уровневые выпадающие списки. Базовый пример:
https://docs.google.com/spreadsheets/d/1Vuq9_jJHgLJ7fe6yF0EZEERlo0LTChXezhqHjLUwmaY/copy
Михаил придумал, как это сделать в одну формулу: https://pastebin.com/6tuDiYpV. Это очень круто, и я надеялся, что кто-то предложит такое решение =)
№2
3-уровневые выпадающие списки. Пример того, как добавлять любое количество уровней связанных списков:
https://docs.google.com/spreadsheets/d/1W9r_PhrL1FKBo_klDpAhreKP7kqfBi1W2PYpc6cSJwg/copy
№3
3-уровневые выпадающие списки + возможность прямо с главного листа добавлять новые элементы в список:
https://docs.google.com/spreadsheets/d/1J23nZ4bHZNkBNblK8ujCW1g9nkjpXBi9apvAgT5pR3c/copy
№4
2-уровневые списки для столбцов, «размножаются» направо:
https://docs.google.com/spreadsheets/d/1un-ZDDtk6OFw3qFs98SFIuKmp-7XXwBMvTMb77EpCbU/copy
***
Другие примеры использования относительных ссылок в проверке данных.
№5
«Уменьшающийся» список. Списки, которые не дают ввести одно значение 2 раза:
https://docs.google.com/spreadsheets/d/1YpvWaJazWogJGASMys4sAmo4Nc_Y4dhZa0rO_j1xl4s/copy
На канале делали похожий вариант (https://t.me/google_sheets/280)
№6
Подсказка следующего номера для колонки с числовыми айди:
https://docs.google.com/spreadsheets/d/1m4Y6cpUC7P7T1HI6uY1noZcxvCweEnzxu5fmt4vc7L0/copy
№7
Накопительный список, который позволяет дубликаты (так можно “яблоко, груша, яблоко”)
https://docs.google.com/spreadsheets/d/1FUwUsSg8R71M1bp3Y-ZhZTJ8FMJKv4KoexmMa96s_lc/copy
№8
Накопительный список, который запрещает дубликаты (так нельзя: “яблоко, груша, яблоко”)
https://docs.google.com/spreadsheets/d/15PgvOv5nC2dpEgGHymJ12OLLexROrTktb7Zs59pokUo/copy
—————-
Заметки:
1. Пожалуйста, пока не применяйте этот вариант в промышленных масштабах. Квоты Гугла пока еще серьёзные, и скорость работы формул не всегда такая, как нам хотелось бы (хочу как в Экселе =)
2. Но ведь круто, на правда ли? Сколько ещё примеров можно придумать? ;)
Хочу вернуться к теме $$ в проверке данных по диапазону.
Что поменялось.
В правилах проверки данных появилась возможность делать относительные ссылки. Если скопировать выпадающий список со ссылкой на диапазон, то изменение диапазона будет происходить по тем же правилам, что и внутри формул.
=$A$1 — ссылка при копировании не меняется. $ перед буквой закрепляет колонку, $ перед цифрой закрепляет строку.=$A1 — при копировании меняется только строка=A$1 — при копировании меняется только колонка=A1 — при копировании направо меняется колонка на B, C, D. При копировании вниз меняется строка на 2, 3, 4.Еще в проверке можно использовать открытый диапазон:
B2:2 — начни с B2 и закончи последней колонкой 2-ой строки.
Почему я считаю, что это 🔥.
- если у вас таблица в 1000+ строк, то менять ссылки в каждой проверке данных очень долго. Вам придется 1000+ раз зайти в условное форматирование и поменять ссылку. Я смотрел статью (https://www.xelplus.com/google-sheets-multiple-dependent-dropdown-lists/), в котором MVP предлагает нам сделать это вручную. Мне кажется, что вручную — не вариант, но это "удобно" было делать скриптом. Теперь скрипт вообще не нужен. Просто копируете диапазон с *относительной ссылкой* вниз.
Ниже еще примеры. Относительные ссылки для копирования списков:
Примеры для связанных списков.
№1
2-уровневые выпадающие списки. Базовый пример:
https://docs.google.com/spreadsheets/d/1Vuq9_jJHgLJ7fe6yF0EZEERlo0LTChXezhqHjLUwmaY/copy
Михаил придумал, как это сделать в одну формулу: https://pastebin.com/6tuDiYpV. Это очень круто, и я надеялся, что кто-то предложит такое решение =)
№2
3-уровневые выпадающие списки. Пример того, как добавлять любое количество уровней связанных списков:
https://docs.google.com/spreadsheets/d/1W9r_PhrL1FKBo_klDpAhreKP7kqfBi1W2PYpc6cSJwg/copy
№3
3-уровневые выпадающие списки + возможность прямо с главного листа добавлять новые элементы в список:
https://docs.google.com/spreadsheets/d/1J23nZ4bHZNkBNblK8ujCW1g9nkjpXBi9apvAgT5pR3c/copy
№4
2-уровневые списки для столбцов, «размножаются» направо:
https://docs.google.com/spreadsheets/d/1un-ZDDtk6OFw3qFs98SFIuKmp-7XXwBMvTMb77EpCbU/copy
***
Другие примеры использования относительных ссылок в проверке данных.
№5
«Уменьшающийся» список. Списки, которые не дают ввести одно значение 2 раза:
https://docs.google.com/spreadsheets/d/1YpvWaJazWogJGASMys4sAmo4Nc_Y4dhZa0rO_j1xl4s/copy
На канале делали похожий вариант (https://t.me/google_sheets/280)
№6
Подсказка следующего номера для колонки с числовыми айди:
https://docs.google.com/spreadsheets/d/1m4Y6cpUC7P7T1HI6uY1noZcxvCweEnzxu5fmt4vc7L0/copy
№7
Накопительный список, который позволяет дубликаты (так можно “яблоко, груша, яблоко”)
https://docs.google.com/spreadsheets/d/1FUwUsSg8R71M1bp3Y-ZhZTJ8FMJKv4KoexmMa96s_lc/copy
№8
Накопительный список, который запрещает дубликаты (так нельзя: “яблоко, груша, яблоко”)
https://docs.google.com/spreadsheets/d/15PgvOv5nC2dpEgGHymJ12OLLexROrTktb7Zs59pokUo/copy
—————-
Заметки:
1. Пожалуйста, пока не применяйте этот вариант в промышленных масштабах. Квоты Гугла пока еще серьёзные, и скорость работы формул не всегда такая, как нам хотелось бы (хочу как в Экселе =)
2. Но ведь круто, на правда ли? Сколько ещё примеров можно придумать? ;)
Xelplus - Leila Gharani
How to Create MULTIPLE Dependent Dropdown Lists in Google Sheets
There is a simple trick you can use to create multiple dependent dropdown lists on the same sheet in Google Sheets.
Проблема формата даты скрипта Google Apps (Utilities.formatDate)
Источник:
Я собираю ежедневные процентные ставки из банка на Google Sheets, и я использую следующий код, чтобы добавить новые строки для ставок, содержащихся в A5:F5, с колонкой a, содержащей даты.
Я попытался предварительно отформатировать весь столбец A с помощью "yyyy-MM-dd", используя выпадающее меню форматирования в Google Sheets, но если я запускаю код выше, моя новая строка все еще находится в"M/dd/yyyy"
Решение :
••••••••••
Обсудить:
Источник:
Я собираю ежедневные процентные ставки из банка на Google Sheets, и я использую следующий код, чтобы добавить новые строки для ставок, содержащихся в A5:F5, с колонкой a, содержащей даты.
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Interest Rates");
var source = sheet.getRange("A5:F5");
var values = source.getValues();
values[0][0] = Utilities.formatDate(new Date(), "GMT+10:00", "yyyy-MM-dd");
sheet.appendRow(values[0]);
};
Моя проблема заключается в следующем - хотя я указал формат даты "yyyy-MM-dd", даты в столбце A в моих новых строках создаются в этом формате"M/dd/yyyy".Я попытался предварительно отформатировать весь столбец A с помощью "yyyy-MM-dd", используя выпадающее меню форматирования в Google Sheets, но если я запускаю код выше, моя новая строка все еще находится в"M/dd/yyyy"
Решение :
values[0][0] = Utilities.formatDate(new Date(),#JS #GAS #date
"GMT+10:00", "yyyy-MM-dd").setNumberFormat('yyyy-mm-dd');
••••••••••
Обсудить:
coderoad.ru
Проблема формата даты скрипта Google Apps (Utilities.formatDate)
- CodeRoad
- CodeRoad
Утилита Utilities.formatDate() форматирует строку javascript. Однако при записи в электронную таблицу новая строка данных интерпретируется Google Sheets для определения типов данных и...
Simple Trigger onSelectionChange(e) not work
Источник:
Обсудить:
#GAS #triggers #snippet
Источник:
function onSelectionChange(e) {
var sh=e.range.getSheet();
e.source.toast('Sheet: ' + sh.getName() + ' Range: ' + e.range.getA1Notation());
}
••••••••••Обсудить:
#GAS #triggers #snippet
Stack Overflow
Simple Trigger onSelectionChange(e) not work
code.gs
var runSelect = true
function onSelectionChange(e) {
var sheet = SpreadsheetApp.getActiveSheet()
var range = e.range;
var column = range.getColumn();
var lastRow = sheet.getLastRow...
var runSelect = true
function onSelectionChange(e) {
var sheet = SpreadsheetApp.getActiveSheet()
var range = e.range;
var column = range.getColumn();
var lastRow = sheet.getLastRow...
ReScript - язык после TypeScript? - блог codecentric AG
https://blog.codecentric.de/en/2021/01/rescript-compare-typescript-elm/
https://blog.codecentric.de/en/2021/01/rescript-compare-typescript-elm/
codecentric AG
ReScript – the language after TypeScript?
ReScript is a new transpiler language for JavaScript. How does it compare to Elm and TypeScript? How to get started? Here's an overview.
Получите пользователя, который нажал кнопку в электронной таблице
Источник:
Задавать вопрос
Я добавил кнопку в электронную таблицу и назначил ей сценарий. Есть ли способ определить адрес электронной почты пользователя, который нажал на него? Скрипт редактирует данные, поэтому, вероятно, onEditтриггер должен работать, однако функция, Session.getActiveUser().getEmail()установленная этим триггером, не распознает пользователя.
Это возможно с обычными учетными записями Gmail, с помощью этого обходного пути!
Я использую некоторые функции защиты, которые показывают пользователя и владельца документа, и я сохраняю его в свойствах для повышения производительности. Удачи!
Обсудить:
#GAS #hak
Источник:
Задавать вопрос
Я добавил кнопку в электронную таблицу и назначил ей сценарий. Есть ли способ определить адрес электронной почты пользователя, который нажал на него? Скрипт редактирует данные, поэтому, вероятно, onEditтриггер должен работать, однако функция, Session.getActiveUser().getEmail()установленная этим триггером, не распознает пользователя.
Это возможно с обычными учетными записями Gmail, с помощью этого обходного пути!
Я использую некоторые функции защиты, которые показывают пользователя и владельца документа, и я сохраняю его в свойствах для повышения производительности. Удачи!
function onEdit(e) {
SpreadsheetApp.getUi().alert("User Email is " + getUserEmail());
}
function getUserEmail() {
var userEmail = PropertiesService.getUserProperties().getProperty("userEmail");
if(!userEmail) {
var protection = SpreadsheetApp.getActive().getRange("A1").protect();
// tric: the owner and user can not be removed
protection.removeEditors(protection.getEditors());
var editors = protection.getEditors();
if(editors.length === 2) {
var owner = SpreadsheetApp.getActive().getOwner();
editors.splice(editors.indexOf(owner),1); // remove owner, take the user
}
userEmail = editors[0];
protection.remove();
// saving for better performance next run
PropertiesService.getUserProperties().setProperty("userEmail",userEmail);
}
return userEmail;
}
••••••••••Обсудить:
#GAS #hak
Stack Overflow
Get the user who clicked on the button in the spreadsheet
I have added the button into spreadsheet and assigned the script to it. Is there a way to determine the user's email of person that clicked it? Script edits the data so probably onEdit trigger should
Forwarded from Google Apps Script | Канал
Конечно, поиск на GitHub - это удивительно ненадежная вещь, но можно обойти данные по API и собрать манифесты, чтобы иметь представление о текущем соостоянии экосистемы Apps Script. Bruce Mcpherson публикует scrviz.web.app для поиска публичный репозиториев, которые содержат проекты скриптов. На скрине поиск приложений, которые работают с Sheets Advanced Service.