Skip to content

Instantly share code, notes, and snippets.

View brainysmurf's full-sized avatar

Adam Morris brainysmurf

View GitHub Profile
@brainysmurf
brainysmurf / DbSheets_Temp.gs
Last active December 25, 2017 04:01
DbSheets_Temp Adds the ability to use temporary spreadsheets within dbsheets.
(function (global, Factory) {
/*
Build upon dbsheets
*/
if (pkg && pkg.dbsheets && pkg.dbsheets.extend) {
pkg.dbsheets.extend.registerInit(function (dbObj) {
dbObj.makeTemp = function (title) {
title = title || "Temporary";
return dbObj.createWithTitle(title);
@brainysmurf
brainysmurf / FormatLogger.gs
Last active January 21, 2018 10:05
FormatLogger is an alternative logging module for google app scripting. This gist is for the package manager.
(function (global, Factory) {
global.pkg = global.pkg || {};
pkg.formatLogger = function () { return Factory.apply(Factory, [global].concat(Array.prototype.slice.call(arguments))); }
pkg.formatLogger(); // can be overwritten with another call if transformers are desired
})(this,
function Package (global, options) {
options = options || {};
if (options.useLogger)
options.loggerObject = Logger;
@brainysmurf
brainysmurf / FormatLogger.gs
Last active September 24, 2023 12:12
FormatLogger is an alternative logging approach for the app script stack. To use, just copy the code in FormatLogger.gs into your project.
(function (global, Factory) {
global.formatLogger = function () { return Factory.apply(Factory, [global].concat(Array.prototype.slice.call(arguments))); }
formatLogger(); // can be overwritten with another call if transformers are desired
})(this,
function Package (global, options) {
options = options || {};
options.useLogger = options.useLogger || false;
if (options.useLogger)
options.loggerObject = Logger;
@brainysmurf
brainysmurf / MBRequests.gs
Last active March 10, 2018 08:53
ManageBac Endpoint Requests
(function (global, Package) {
global.Requests = (function wrapper (args) {
var wrapped = function () { return Package.apply(Package, arguments); }
for (i in args) { wrapped[i] = args[i]; }
return wrapped;
}({
utils: {
/*
Merge keys from target into source
@brainysmurf
brainysmurf / concurrency.gs
Last active February 9, 2025 15:51
Concurrent processing in App Scripts
/**
* Pretends to take a long time to return two rows of data
*
* @param {string} endpoint
* @return {ResponseObject}
*/
function doSomething (endpoint) {
Utilities.sleep(5 * 1000); // sleep for 5 seconds
return {
numberOfRows: 2,
(function(global,name,Package,helpers){var ref=function wrapper(args){var wrapped=function(){return Package.apply(global.Import&&Import.module?Import._import(name):global[name],[global].concat(Array.prototype.slice.call(arguments)))};for(i in args){wrapped[i]=args[i]}return wrapped}(helpers);if(global.Import&&Import.module){Import.register(name,ref)}else{Object.defineProperty(global,name,{value:ref});global.Import=global.Import||function(lib){return global[lib]};Import.module=false}})(this,
"Requests",
function RequestsPackage_ (global, config) {
var self = this, discovery, discoverUrl;
discovery = function (name, version) {
return self().get('https://www.googleapis.com/discovery/v1/apis/' + name + '/' + version + '/rest');
};
@brainysmurf
brainysmurf / Minified.gs
Last active March 17, 2018 01:54
Package Wrapper
(function(global,name,Package,helpers){var ref=function wrapper(args){var wrapped=function(){return Package.apply(global.Import&&Import.module?Import._import(name):global[name],arguments)};for(i in args){wrapped[i]=args[i]}return wrapped}(helpers);if(global.Import&&Import.module){Import.register(name,ref)}else{Object.defineProperty(global,name,{value:ref});global.Import=global.Import||function(lib){return global[lib]};Import.module=false}})(this,
"Name",
{ /* helpers */ }
);
@brainysmurf
brainysmurf / AppsScriptsRequests.gs
Created March 21, 2018 06:19
AppsScriptsRequests
(function(global,name,Package,helpers){var ref=function wrapper(args){var wrapped=function(){return Package.apply(global.Import&&Import.module?Import._import(name):global[name],[global].concat(Array.prototype.slice.call(arguments)))};for(i in args){wrapped[i]=args[i]}return wrapped}(helpers);if(global.Import&&Import.module){Import.register(name,ref)}else{Object.defineProperty(global,name,{value:ref});global.Import=global.Import||function(lib){return global[lib]};Import.module=false}})(this,
'AppsScriptsRequests',
function AppsScriptsRequests_ (_, _config) {
_config = _config || {};
_config.scriptId = _config.scriptId || null;
if (_config.scriptId === 'me') _config.scriptId = ScriptApp.getScriptId();
var self, requests, keepAppsscriptsFile, requiresScriptId;
self = this;
@brainysmurf
brainysmurf / Import.gs
Created April 1, 2018 11:26
Import other modular libraries.
(function Package_ (global) {
global.Import = function (lib, options) {
options = options || {};
options.namespace = options.namespace || false;
options.base = options.base || false;
if (options.namespace) {
var p = global, g = global, last;
options.namespace.split('.').forEach(function (namespace) {
g[namespace] = g[namespace] || {};
p = g
(function(global,name,Package,helpers){var ref=function wrapper(args){var wrapped=function(){return Package.apply(global.Import&&Import.module?Import._import(name):global[name],[global].concat(Array.prototype.slice.call(arguments)))};for(i in args){wrapped[i]=args[i]}return wrapped}(helpers);if(global.Import&&Import.module){Import.register(name,ref)}else{Object.defineProperty(global,name,{value:ref});global.Import=global.Import||function(lib){return global[lib]};Import.module=false}})(this,
"PropertyStore",
function PropertyStorePackage_ (global, config) {
config = config || {};
config.jsons = config.jsons || false;
var PropertyObject = function (_propertyObject) {
return {