Skip to content

Instantly share code, notes, and snippets.

Avatar
🎯
Focusing

pfelipm

🎯
Focusing
View GitHub Profile
View Check user onOpen workflow.gs
/**
* Demo authorization workflow that checks whether the current user can run this Apps Script, uses
* the Admin SDK Directory Advanced Service
* Twitter thread here: https://twitter.com/pfelipm/status/1576954653425618945
* @pfelipm (OCT/22)
*
* @OnlyCurrentDoc
*/
@pfelipm
pfelipm / Reset slicers.gs
Last active Nov 23, 2021
Reset all slicers in the current sheet of a Google Spreadsheet
View Reset slicers.gs
/**
* Resets all slicers in the active sheet using the Apps Script Spreadsheet Service.
*
* Context:
*
* Calling setColumnFilterCriteria(columnPosition, null) or trying to modify
* in some other way the current filter criteria of a slicer whose criteria
* has already been set manually (using the GUI) won't have any effect.
* So, this function clones & deletes all slicers, instead.
*
View getGroupsRecursively.gs
/**
* Recursively gets all groups that a given user/group is a member
* of, either directly or indirectly, in a GWS domain.
*
* -OR-
*
* checks whether user/group is a member of provided group,
* both tasks support external users to the domain.
* Uses the AdminDirectory advanced service, and should be invoked by domain Admins!
*
View TOC custom fx.gs
/**
* Builds a TOC in the spreadsheet.
*
* Pablo Felip (@pfelipm).
*
* @param {true} includeId Include sheet ID
* @param {true} includeUrl Include link to sheet
* @return List of [Sheet name, Sheet ID, Sheet URL]
* @customfunction
*/
@pfelipm
pfelipm / fxRepetirFilas.gs
Last active May 23, 2021
Función personalizada para HdC repetirFilas()
View fxRepetirFilas.gs
/**
* Repite cada fila un nº indicado de veces
* @param {A2:C4} intervaloDatos Intervalo de datos cuyas filas se van a repetir
* @param {D2:D4} colRepeticiones Vector columna que indica el nº de veces a repetior cada fila
* @customfunction
*/
function repetirFila(intervaloDatos, colRepeticiones) {
// ⚠️ ¡Se debería realizar un control de errores sobre los parámetros de la función!
@pfelipm
pfelipm / ButtonLock.gs
Last active May 9, 2021
Using LockService to avoid concurrent executions, specially relevant when invoking GAS code from buttons in a spreadsheet.
View ButtonLock.gs
/**
* Simple demonstration of LockService...
* https://developers.google.com/apps-script/reference/lock
* ...to prevent concurrent executions of a GAS function,
* for example when invoked by a button in a Spreadsheet (rather likely).
* Demo: https://docs.google.com/spreadsheets/d/1n_7nZIi5QtN9URzsKdFW6WtSxPM9uUK3QhQSbzbltHg
*
* @OnlyCurrentDoc
*/
@pfelipm
pfelipm / generated.photos.gs
Last active Apr 28, 2021
Get faces generated from scratch by AI using generated.photos API
View generated.photos.gs
/**
* generated.photos API demo >> Faces generated from scratch by AI
*
* 1. Get API key at https://generated.photos/api
* 2. Make a copy of https://docs.google.com/spreadsheets/d/1RkLy6e0h1QURtsOj1gsAfWGzvAUua0yIky_THy8ut1Q
* 3. Write your API key inside cell C3 (don't share!)
*
* Please, note:
* - Just 50 API calls/month! (API free plan)
* - Some trait combinations apparently fail to return results :-?
@pfelipm
pfelipm / Text2GzipBlob.gs
Last active May 10, 2021
From UNICODE text to gzipped blob encoded as text and back using Apps Script
View Text2GzipBlob.gs
/**
* These two functions:
* 1. Transform a UNICODE string to blob, compress and encode it as text using two different methods (base64 or JSON.stringify)
* 2. Reverse de process
*/
function testTextoGzipBlob() {
// Method 1: base64Encode (better compression):
// Text >> Blob >> gzip >> getBytes Byte[] >> *base64Encode* text >> [cache key/value] >> *base64Decode* Byte[] >> Blob >> ungzip >> Text 😅
@pfelipm
pfelipm / GlobalTextSubst.gs
Last active Jun 6, 2021
Multiple <placeholder> text substitutions using a JS map and reduce() with initial value (+other methods).
View GlobalTextSubst.gs
/**
* Multiple <placeholder> text substitutions
* using a JS map data type and reduce() with initial value (+other methods)
*/
function globalTextSubst(){
// Some sample data
const alumno = 'Juan Rebote';
const ciclo = 'Gestión de ventas y espacios comerciales';
@pfelipm
pfelipm / Consolidar HdCs.gs
Last active Feb 9, 2021
Consolida los datos del intervalo indicado procedentes de todas las HdC dentro de la carpeta designada en la HdC actual
View Consolidar HdCs.gs
/**
* Importa intervalos de datos idénticos procedentes de todas
* las hdc que se encuentran en la carpeta indicada
* y los consolida en la actual.
* No realiza ningún control de errores.
* El orden de importación no está garantizado.
* Demo: https://drive.google.com/drive/folders/1BZNT5TNcOpKaP5Hy3BuvVZhT_FhtrWjr?usp=sharing
*/
const ID_CARPETA_ORIGEN = '1bqlCmxWaL-LCNb6T7vOWNtPky3bK99K-';