Volond Apps
221 subscribers
216 photos
28 videos
22 files
994 links
Программирование для души и от лени
Добро пожаловать! У нас есть отличное сообщество любителей Excel и VBA, Google Sheet и Google Apps Script, а также всех тех, кто готов работать с этим программным обеспечением. Присоединяйтесь к нам, чтобы задавать и от
Download Telegram
Forwarded from Azamat Zhaksybayev
Trello Api + GSheet

Оставлю здесь, может понадобится кому-нибудь. Из таблицы можно создать карточку в Трелло и обратно в таблицу получить статус карточки через вебхуки. В таблице есть ссылка на открытую доску в трелло для теста

https://docs.google.com/spreadsheets/d/1AqV7u2t2ZtwsXyY4TFo1yJJ378nQPDluDHVUf-NYGD8/edit?usp=sharing
Forwarded from volond
This media is not supported in your browser
VIEW IN TELEGRAM
Понадобилось мне синхронизировать заголовки столбцов на разных листах, но хотелось какой-нибудь функционал, чтобы не приходилось бегать и производить настройку с одного места.
Добавил названия листов и указал в какой строке находятся заголовки в этом листе
Формулой подтянул заголовки, но как известно попытка внести данные в ячейки, которые затрагивают эту формулу ломают эту формулу ,поэтому была был придуман какой функционал
Он позволяет изменить заголовок в соответствующем столбце или добавить его в конец строки заголовков соответствующего листа
Код
Отфильтруем Массив объектов по переданному массиву ключей
/**
* Отфильтруем Массив объектов по переданному массиву ключей
* Значения этих в объектах должны соответствовать истине
* @param {Array} filter
* @param {Array[Object]} obj
* @returns {Array}
* var filter=['a','b']
* var obj=[{a:false,b:1,c:3},{a:true,b:1,c:0}]
* return [{a:true,b:1,c:0}]
*/
function filterObject(filter,obj){
var some=(x)=>!x
return obj.filter(row=>!filter.map(key=>row[key]).some(some))
}
#snippet #JS
СyrillicPattern
#regexp
function cyrillicPattern(){
const cyrillicPattern = /[\u0400-\u04FF]/;
const cyrillicPattern1 = /(?<I>[\u0400-\u04FF]+)\s{1,}(?<F>[\u0400-\u04FF]+)\s{1,}(?<O>[\u0400-\u04FF]+)/;
console.log('Привіт:', cyrillicPattern.test('Привіт'));
console.log('Hello:', cyrillicPattern.test('Hello'));
console.log('Привіт Вася Пупкин', 'Привіт Вася Пупкин'.match(cyrillicPattern1));
var {I,F,O}='Привіт Вася Пупкин'.match(cyrillicPattern1).groups
console.log([I,F,O])//[ 'Привіт', 'Вася', 'Пупкин' ]
}
Получение 1-й пустой ячейки определенного столбца путем поиска в TOP листа
// Pattern 3: getNextDataCell
const patternA3_ = (columnNumber) => {
const range = SpreadsheetApp.openById(ssId)
.getSheets()[0]
.getRange(1, columnNumber);
return range.getDisplayValue()
? range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow() + 1
: 1;
};
Получение 1-й непустой ячейки определенного столбца путем поиска снизу листа.
// Pattern 4: TextFinder
const patternB4_ = (columnNumber) => {
const sheet = SpreadsheetApp.openById(ssId).getSheets()[0];
const search = sheet
.getRange(1, columnNumber, sheet.getMaxRows())
.createTextFinder(".")
.useRegularExpression(true)
.findPrevious();
return search ? search.getRow() : 1;
};
dpicker

Источник:

••••••••••
Обсудить:
Forwarded from DidacticСardsBot
Скрипт Google Apps: сохранение уникального ключа пользователя от пользователя, получающего доступ к вашему веб-приложению

Источник:



Почему это важно? Что ж, вы можете ограничить количество раз, когда пользователь отправляет форму в вашем WebApp. Если вы можете получить уникальный ключ доступа пользователя, вы можете сохранить количество попыток пользователя и проверить его перед отправкой данных.

••••••••••
Обсудить:
Forwarded from Kanat
Уникальные без удаления строк
#snippet #JS #GAS
function g(range){
//var range=[['v'],["v"],["b"]]
var r=range.flat()
var u=[...new Set(r)]
var d=r.reduce((acc, el) => {
acc[el] = (acc[el] || 0) + 1;
return acc;
}, {})
var a=Object.entries(d)
return a.map((e)=>[e[0],...Array(e[1]-1)
.fill('')])
.flat()
.map((h,i)=>[range[i][0],h])
}