Transforms the data of a given Spreadsheet Sheet to JSON.
- The frozen rows are taken as keys for the JSON.
- The data taken for the values is only that after the frozen rows
exportJSON(Spreadsheet) - transforms the data in the given sheet to JSON.
| /* | |
| updated 2018-04-28 | |
| source lives here: https://gist.github.com/nicobrx/2ecd6fc9ca733dcd883afebba5cf200e | |
| standalone script ID for use as a library: 1gZ78JObyrYiH0njoZ86fQ2NgMwavUgiXVhRDrIFetPZL256e31PSNiHq | |
| Functions included here: | |
| Sheets data array and object functions | |
| objectifySheet(sheet,propertyNames,newPropertyNames) - Takes a sheet with a header row and converts it into an array of objects | |
| arrayFromSheet(sheet,propertyNames,newPropertyNames) - creates an array from a sheet, can specify column headers |
| <div id="toolbar"> | |
| <div id="title"> Rich-text Editor </div> | |
| <button id="bold" onclick="makeBold()"> Bold </button> | |
| <button id="italic" onclick="makeItalic()"> Italic </button> | |
| <button id="underline" onclick="doUnderline()"> Underline </button> | |
| <button onclick="justifyLeft()"> Justify Left </button> | |
| <button onclick="justifyCenter()"> Justify Center </button> | |
| <button onclick="justifyRight()"> Justify Right </button> |
You don't really need a framework or fancy cutting-edge JavaScript features to do two-way data binding. Let's start basic - first and foremost, you need a way to tell when data changes. Traditionally, this is done via an Observer pattern, but a full-blown implementation of that is a little clunky for nice, lightweight JavaScript. So, if native getters/setters are out, the only mechanism we have are accessors:
var n = 5;
function getN() { return n; }
function setN(newN) { n = newN; }
console.log(getN()); // 5
setN(10);
| const readline = require('readline') | |
| /** | |
| * Create an active bound readline interface using `stdin` and `stdout`. | |
| * | |
| * @param {function(string): void} callback handler for each inputed line | |
| * @returns {readline.ReadLine} the active configured interface | |
| */ | |
| function createReadlineInterface(callback) { | |
| const rl = readline.createInterface({ |
| //Example 1 - Calculate average value of an array (transform array into a single number) | |
| var scores = [89, 76, 47, 95] | |
| var initialValue = 0 | |
| var reducer = function (accumulator, item) { | |
| return accumulator + item | |
| } | |
| var total = scores.reduce(reducer, initialValue) | |
| var average = total / scores.length | |
| /*Explain about function |
| /* | |
| * script to export data in all sheets in the current spreadsheet as individual csv files | |
| * files will be named according to the name of the sheet | |
| * author: Michael Derazon | |
| */ | |
| function onOpen() { | |
| var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
| var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}]; | |
| ss.addMenu("csv", csvMenuEntries); |
| // url_to_drive.gs | |
| // Google Apps Script | |
| // Allows uploading a URL directly to Google Drive. | |
| // | |
| // Live link: | |
| // https://script.google.com/macros/s/AKfycbzvhbHS4hnWPVBDHjQzZHA0qWq0GR-6hY7TbYsNto6hZ0MeAFZt/exec | |
| // | |
| // Source-code: | |
| // https://gist.github.com/denilsonsa/8134679 | |
| // https://script.google.com/d/1Ye-OEn1bDPcmeKSe4gb0YSK83RPMc4sZJt79SRt-GRY653gm2qVUptoE/edit |
in case of processing a very large array e.g. Promise.all(A_VERY_LARGE_ARRAY_OF_XHR_PROMISE)
which would probably blow you browser memory by trying to send all requests at the same time
solution is limit the concurrent of requests, and wrap promise in thunk
Promise.allConcurrent(2)([()=>fetch('BLAH1'), ()=>fetch('BLAH2'),...()=>fetch('BLAHN')])
| // By @coderitual | |
| // https://twitter.com/coderitual/status/1112297299307384833 | |
| // Remove any duplicates from an array of primitives. | |
| const unique = [...new Set(arr)] | |
| // Sleep in async functions. Use: await sleep(2000). | |
| const sleep = (ms) => (new Promise(resolve => setTimeout(resolve, ms))); | |
| // or | |
| const sleep = util.promisify(setTimeout); |