Не работающие !!!
Cвязки формул в Google Sheet
IMPORTRANGE() СРЗНАЧ()
IMPORTRANGE() СРЗНАЧА()
IMPORTRANGE() СРЗНАЧЕСЛИ()
IMPORTRANGE() СРЗНАЧЕСЛИМН()
IMPORTRANGE() СУММ()
IMPORTRANGE() СУММЕСЛИ(), СУММЕСЛИМН()
IMPORTRANGE() СЧЁТЕСЛИ(), СЧЁТЕСЛИМН()
IMPORTRANGE() СЧЁТЕСЛИ(), СЧЁТЕСЛИМН()
ARRAYFORMULA() БДСУММ()
ARRAYFORMULA() ДВССЫЛ()
ARRAYFORMULA() СМЕЩ()
ARRAYFORMULA() СРЗНАЧЕСЛИМН()
ARRAYFORMULA() СУММЕСЛИМН()
ARRAYFORMULA() ЯЧЕЙКА()
ARRAYFORMULA() FILTER()
ARRAYFORMULA() IFS()
ARRAYFORMULA() ISFORMULA()
ARRAYFORMULA() JOIN
ARRAYFORMULA() MAXIFS()
ARRAYFORMULA() MINIFS()
ARRAYFORMULA() QUERY
ARRAYFORMULA() SPARKLINE()
ARRAYFORMULA() ИНДЕКС()
ARRAYFORMULA() ISFORMULA()
ARRAYFORMULA() GOOGLETRANSLATE()
Автор подборки @akanat ᅠ
#book
Cвязки формул в Google Sheet
IMPORTRANGE() СРЗНАЧ()
IMPORTRANGE() СРЗНАЧА()
IMPORTRANGE() СРЗНАЧЕСЛИ()
IMPORTRANGE() СРЗНАЧЕСЛИМН()
IMPORTRANGE() СУММ()
IMPORTRANGE() СУММЕСЛИ(), СУММЕСЛИМН()
IMPORTRANGE() СЧЁТЕСЛИ(), СЧЁТЕСЛИМН()
IMPORTRANGE() СЧЁТЕСЛИ(), СЧЁТЕСЛИМН()
ARRAYFORMULA() БДСУММ()
ARRAYFORMULA() ДВССЫЛ()
ARRAYFORMULA() СМЕЩ()
ARRAYFORMULA() СРЗНАЧЕСЛИМН()
ARRAYFORMULA() СУММЕСЛИМН()
ARRAYFORMULA() ЯЧЕЙКА()
ARRAYFORMULA() FILTER()
ARRAYFORMULA() IFS()
ARRAYFORMULA() ISFORMULA()
ARRAYFORMULA() JOIN
ARRAYFORMULA() MAXIFS()
ARRAYFORMULA() MINIFS()
ARRAYFORMULA() QUERY
ARRAYFORMULA() SPARKLINE()
ARRAYFORMULA() ИНДЕКС()
ARRAYFORMULA() ISFORMULA()
ARRAYFORMULA() GOOGLETRANSLATE()
Автор подборки @akanat ᅠ
#book
Telegram
Kanat A.
expert@googlesheets.pro
Есть задача:
Предположим, что у нас есть массив объектов, описывающих сленговые выражения викторианской эпохи.
Нужно отфильтровать те выражения, которые не встречаются в Google Books (свойство found соответствующих объектов равно false),
и найти среднюю оценку популярности выражений( свойство
popularity
).
Вот как могут выглядеть подобные данные:
Предположим, что у нас есть массив объектов, описывающих сленговые выражения викторианской эпохи.
Нужно отфильтровать те выражения, которые не встречаются в Google Books (свойство found соответствующих объектов равно false),
и найти среднюю оценку популярности выражений( свойство
popularity
).
Вот как могут выглядеть подобные данные:
const victorianSlang = [Ваши Решения пишем в репостах к посту в группе или в комментариях
{
term: 'doing the bear',
found: true,
popularity: 108,
},
term: 'katterzem',
found: false,
popularity: null,
},
{
term: 'bone shaker',
found: true,
popularity: 609,
},
{
term: 'smothering a parrot',
found: false,
popularity: null,
},
{
term: 'damfino',
found: true,
popularity: 232,
},
{
term: 'rain napper',
found: false,
popularity: null,
},
{
term: 'donkey’s breakfast',
found: true,
popularity: 787,
},
{
term: 'rational costume',
found: true,
popularity: 513,
},
{
term: 'mind the grease',
found: true,
popularity: 154,
},
];
ᅠ
Готовим Симпатишное меню для Вашей таблицы Вкусно и Быстро
Раз
const toObject = (array)=>{ const keys = array.shift();return array.map(values =>{ return keys.reduce((o, k, i)=> {o[k] = values[i];return o},{})})};
Три
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
const entries=toObject(ListOfMenu.items)
sheet.addMenu('Dmenu', entries);
};
Готовим Симпатишное меню для Вашей таблицы Вкусно и Быстро
Раз
const ListOfMenu={
title:'Меню',
items:[['name','functionName'],
["🥑 Создать Меню","CreateMenuList"],
['⚡️ Удалить Меню','RemoveMenu'],
['🎉 Обновить Меню','UbdateMenu'],
['🔥 Создать Лист Меню','createMenuSheet']],
}
Дваconst toObject = (array)=>{ const keys = array.shift();return array.map(values =>{ return keys.reduce((o, k, i)=> {o[k] = values[i];return o},{})})};
Три
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
const entries=toObject(ListOfMenu.items)
sheet.addMenu('Dmenu', entries);
};
Создать независимую копию JavaScript массива
В JavaScript все присваивания объектов реализуются через передачу ссылок на них.
Если вы хотите сделать независимую копию массива, то нужно использовать метод slice без аргументов.
Важно запомнить, что если массив состоит из сущностей Array или Object, то они по прежнему будут ссылаться на родительские объекты.
P.S. Медленный способ глубокого клонирования
Способ, который работает и в случае, когда в массиве есть массивы или объекты:
В JavaScript все присваивания объектов реализуются через передачу ссылок на них.
var oldArray = ["a", "b", "c"];Хоть мы и получили две разные переменные, но тем не менее они обе ссылаются на один и тот же объект массива. Если сейчас в одном массиве произвести какие-либо манипуляции с элементами, то аналогичные изменения можно будет увидеть и в другом.
var newArray = oldArray;
Если вы хотите сделать независимую копию массива, то нужно использовать метод slice без аргументов.
var oldArray = ["a", "b", "c"];Массивы oldArray и newArray будут состоять из одних и тех же элементов, но фактически это будут разные объекты.
var newArray = oldArray.slice();
Важно запомнить, что если массив состоит из сущностей Array или Object, то они по прежнему будут ссылаться на родительские объекты.
P.S. Медленный способ глубокого клонирования
Способ, который работает и в случае, когда в массиве есть массивы или объекты:
var newArray = JSON.parse(JSON.stringify(oldArray))#памятка
ᅠ
Проблема:
Иногда нам необходимо обработать данные организованные с помощью
отступов (1С мать твою ...😡)
Google Sheet , к сожалению тоже ни чего не знает о таком способе форматирования
Решение: добавим пользовательскую функцию
Получение отступа ячейки в Excel => VBA
Function Отступ(Cell As Range)
'This function returns the indentation of a cell content
Application.Volatile
'With "Application.Volatile" you can make sure, that the function will be recalculated once the worksheet is recalculated
'for example, when you press F9 (Windows) or press enter in a cell
Отступ = Cell.IndentLevel
'Return the IndentLevel
End Function
#VBA #Excel
Проблема:
Иногда нам необходимо обработать данные организованные с помощью
отступов (1С мать твою ...😡)
Google Sheet , к сожалению тоже ни чего не знает о таком способе форматирования
Решение: добавим пользовательскую функцию
Получение отступа ячейки в Excel => VBA
Function Отступ(Cell As Range)
'This function returns the indentation of a cell content
Application.Volatile
'With "Application.Volatile" you can make sure, that the function will be recalculated once the worksheet is recalculated
'for example, when you press F9 (Windows) or press enter in a cell
Отступ = Cell.IndentLevel
'Return the IndentLevel
End Function
#VBA #Excel
«Мне сказали, что невозможно создать скрипт, который будет печатать из Google Apps».
Я всегда очень любил и люблю «невозможные» задачи:
— Мы сами знаем, что она не имеет решения, — сказал Хунта, немедленно ощетиниваясь. — Мы хотим знать, как её решать.
Аркадий и Борис Стругацкие. Понедельник начинается в субботу
#GAS #GoogleCloudPrint
Я всегда очень любил и люблю «невозможные» задачи:
— Мы сами знаем, что она не имеет решения, — сказал Хунта, немедленно ощетиниваясь. — Мы хотим знать, как её решать.
Аркадий и Борис Стругацкие. Понедельник начинается в субботу
#GAS #GoogleCloudPrint
Хабр
Печать из Google Apps Script
Часть 1. Challenge Читая ленту на oDesk, наткнулся на интересный проект по моему направлению (а я отслеживаю, в основном, задачи на написать что-то, прикрутить ч...
ᅠ
Последняя непустая ячейка в столбце
Последняя непустая ячейка в столбце
function getLastRowByColumn(range){
while(range.length>0 && range[range.length-1][0]=='') range.pop();
return range.length;
}
function getLastRow(){
return SpreadsheetApp.getActive().getLastRow()
}
#GAS #customFunctionGoogle Docs
getLastRowByColumn.png
А как прокачиваете свои знания?Книги, веб.? Ищите информацию под проект или выполняяете упражнения? Пишите в комментах.
https://techrocks.ru/2019/09/18/reading-technical-books/
#book
https://techrocks.ru/2019/09/18/reading-technical-books/
#book
techrocks.ru
Учимся читать: что, как и в каких количествах стоит читать разработчику (+список литературы) | techrocks.ru
Чтобы чтение технической литературы приносило максимум пользы, нужно правильным образом подбирать для себя книги и выкраивать время для чтения.
Подсчитайте количество слов и символов в документе Google
function getWordCount(fileId) {
const SEPARATOR = ' ';
const document = fileId
? DocumentApp.openById(fileId)
: DocumentApp.getActiveDocument();
const text = document.getBody().getText();
const words = text.replace(/\s+/g, SEPARATOR).split(SEPARATOR);
const characters = words.join('');
Logger.log("Word Count: " + words.length);
Logger.log("Character Length: " + characters.length);
}
Более продвинутая версия функции использует регулярные выражения и может работать с китайскими, японскими и корейскими скриптами - Credit .function getWordCountCJK(data) {
var pattern = /[a-zA-Z0-9_\u0392-\u03c9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g;
var m = data.match(pattern);
var count = 0;
if( m === null ) return count;
for (var i = 0; i < m.length; i++) {
if (m[i].charCodeAt(0) >= 0x4E00) {
count += m[i].length;
} else {
count += 1;
}
}
return count;
}
function getWordCount(fileId) {
const SEPARATOR = ' ';
const document = fileId
? DocumentApp.openById(fileId)
: DocumentApp.getActiveDocument();
const text = document.getBody().getText();
const count = getWordCountCJK(text);
Logger.log("Word Count: " + count);
}Очистка данных с помощью Google Sheets: пристальный взгляд
В Google Sheets есть 3 формулы, которые помогут Вам сэкономить огромное количество времени Вот они:
ImportXml
QUERY
REGEXEXTRACT
Только с этими 3 формулами вы сможете очистить данные, которые вам нужны для любых целей - будь то курация аудитории Twitter, анализ ссылок или что-либо еще, о чем вы можете подумать. Прелесть этих формул заключается в их универсальности, поэтому варианты их использования практически бесконечны. Понимая концепцию, лежащую в основе этого, переменные могут быть заменены в зависимости от конкретного варианта использования. Тем не менее, основной процесс очистки, представления и представления данных останется прежним.
Оригинал
Пример
Если вы заинтересованы в получении дополнительной информации, вот список отличных ресурсов:
Xpath Data Scraping Tutorial видео (для пользователей ПК)
Руководство ImportXML для Документов Google
Руководство контент-маркетолога по очистке данных
Как получить максимум от Regex
Для анализа используйте расширение ChroPath
#GoogleSheet #Regex #ImportXML #расширение
В Google Sheets есть 3 формулы, которые помогут Вам сэкономить огромное количество времени Вот они:
ImportXml
QUERY
REGEXEXTRACT
Только с этими 3 формулами вы сможете очистить данные, которые вам нужны для любых целей - будь то курация аудитории Twitter, анализ ссылок или что-либо еще, о чем вы можете подумать. Прелесть этих формул заключается в их универсальности, поэтому варианты их использования практически бесконечны. Понимая концепцию, лежащую в основе этого, переменные могут быть заменены в зависимости от конкретного варианта использования. Тем не менее, основной процесс очистки, представления и представления данных останется прежним.
Оригинал
Пример
Если вы заинтересованы в получении дополнительной информации, вот список отличных ресурсов:
Xpath Data Scraping Tutorial видео (для пользователей ПК)
Руководство ImportXML для Документов Google
Руководство контент-маркетолога по очистке данных
Как получить максимум от Regex
Для анализа используйте расширение ChroPath
#GoogleSheet #Regex #ImportXML #расширение
Moz
SCRAPING AND CLEANING YOUR DATA WITH GOOGLE SHEETS: A CLOSER LOOK
GOOGLE GUARANTEED - Ever found yourself copy and pasting data, wishing there was an easier way? Take a foray into the world of data scraping using Google Sheets with Jeremy Gottlieb!
Недокументированные проблемы ограничения API листов
Когда UrlFetchApp напрямую вызывает конечную точку Sheets API, если размер ответа превышает 50 МБ (52 428 800 байт), возвращается ответ менее 50 МБ. Размер 50 МБ обусловлен ограничением UrlFetchApp. С другой стороны, в Advanced Google Service он не может подтвердить эту ситуацию, потому что ошибка возникает, когда она превышает ограничение.
Читать далее
#SheetAPI #UrlFetchApp
Когда UrlFetchApp напрямую вызывает конечную точку Sheets API, если размер ответа превышает 50 МБ (52 428 800 байт), возвращается ответ менее 50 МБ. Размер 50 МБ обусловлен ограничением UrlFetchApp. С другой стороны, в Advanced Google Service он не может подтвердить эту ситуацию, потому что ошибка возникает, когда она превышает ограничение.
Читать далее
#SheetAPI #UrlFetchApp
Уважаемый мной tanaike предложил хорошую идею
цитую "Подивіться, чи не можемо ми створити щось на кшталт "npm для Apps Script" ??"
База даних скриптов Google Apps в формате JSON
В переписке с Эндрю Робертс и вдохновленный еще одним ГУРУ Bruce Mcpherson с
его Apps Script shared library list ( 136 шт Карл!!! )
Воспользовавшись библиотекой IMPORTJSONAPI
Имеем обновляемую таблицу с следущими полями
libraryName,description,siteUrl,publishedDate,projectKey,tags,authors,description
Так же эта тема обсуждаеться тут
Есть объедененный Google Apps Script Library Database(239 шт)
Здесь живет PackageManager
А здесь Search Google Apps Script Libraries
А также У програмі Google Apps Script Slack WorkSpace є новий канал - proj_library_database
цитую "Подивіться, чи не можемо ми створити щось на кшталт "npm для Apps Script" ??"
База даних скриптов Google Apps в формате JSON
В переписке с Эндрю Робертс и вдохновленный еще одним ГУРУ Bruce Mcpherson с
его Apps Script shared library list ( 136 шт Карл!!! )
Воспользовавшись библиотекой IMPORTJSONAPI
Имеем обновляемую таблицу с следущими полями
libraryName,description,siteUrl,publishedDate,projectKey,tags,authors,description
Так же эта тема обсуждаеться тут
Есть объедененный Google Apps Script Library Database(239 шт)
Здесь живет PackageManager
А здесь Search Google Apps Script Libraries
А также У програмі Google Apps Script Slack WorkSpace є новий канал - proj_library_database
GitHub
andrewroberts - Overview
Freelance Google Apps Script Developer. andrewroberts has 84 repositories available. Follow their code on GitHub.
Известный французский ученый-компьютерщик Жак Шазарен опубликовал бесплатную электронную книгу, которая выглядит как идеальный ресурс и доступна на французском и английском языках.
Работаем с #JSON #GAS #SheetApp
Объеденил в одной таблице
JSON formatter
и
IMPORTJSONAPI
Использует JSONPath Plus
Да вот еще одна библиотека
P.S В планах подружить их на одной форме
Объеденил в одной таблице
JSON formatter
и
IMPORTJSONAPI
Использует JSONPath Plus
Да вот еще одна библиотека
P.S В планах подружить их на одной форме
Google Docs
google_sheets_json_viewer+IMPORTJSONAPI
Приват
FALSE,default,EUR,RUB,USD,currency,chartOption,"charttype"\"column";"color"\"teal";"negcolor"\"purple";"lowcolor"\"#C02942";"highcolor"\"#6A4A3C"
$[exchangeRate][?(*)],$[exchangeRate][?(@.currency == 'EUR'||@.currency == 'RUB'||@.currency == 'USD')]…
FALSE,default,EUR,RUB,USD,currency,chartOption,"charttype"\"column";"color"\"teal";"negcolor"\"purple";"lowcolor"\"#C02942";"highcolor"\"#6A4A3C"
$[exchangeRate][?(*)],$[exchangeRate][?(@.currency == 'EUR'||@.currency == 'RUB'||@.currency == 'USD')]…
This media is not supported in your browser
VIEW IN TELEGRAM
Активная вкладка листа Google Sheet отделяется цветом Используя
Также можно использовать для кастомизации Stylish и его темы https://userstyles.org/
Код CSS
расширение User JavaScript and CSSТакже можно использовать для кастомизации Stylish и его темы https://userstyles.org/
Код CSS
div.docs-sheet-tab:not(.docs-sheet-active-tab) {
background-color: #484848 !important;
}ES6 и функциональное программирование
Как создать копию объекта
ES6: Стрелочные функции
Копирование объектов в JavaScript
Стрелочные функции
arguments
Как создать копию объекта
//ES6 и функциональное програмирование
//Задача: Есть обьект
//Создать копию обьекта
//Выполнить функцию над определеными свойствами обьекта
//Записать результат в Копию под Заданым именем
//И вернуть копию обьекта
const t=()=>{
const q=({id})=>++id
let cnf={name:1,id:1}
const f=(...arg)=>{
let newObj = { ...arg[0]};newObj[arg[1]]=arg[2](arg[0]);return newObj
}
const z=f(cnf,"ddd",q)
console.log(cnf)
console.log(z)
return z
//Профит
//[20-04-12 16:07:28:321 MSK] { name: 1, id: 1 }
//[20-04-12 16:07:28:323 MSK] { name: 1, id: 1, ddd: 2 }
#snippet #JS
}
Ссылки по теме:ES6: Стрелочные функции
Копирование объектов в JavaScript
Стрелочные функции
arguments
Боже! Как давно я это искал
После "допиливания" надеюсь поможет мне навести порядок в моих скриптах
Получение отформатированных сценариев без комментариев в проекте с использованием скрипта Google Apps
P.S.
1. Хотя почему-то комментарии не удалил при тестовом прогоне хотя это даже к лучшему.
2. Стоит посмотреть как среагирует на среду разработки V.8
После "допиливания" надеюсь поможет мне навести порядок в моих скриптах
Получение отформатированных сценариев без комментариев в проекте с использованием скрипта Google Apps
P.S.
1. Хотя почему-то комментарии не удалил при тестовом прогоне хотя это даже к лучшему.
2. Стоит посмотреть как среагирует на среду разработки V.8