AppsScriptPulse

How to Make Your NPM Package Available in Google App Script

Boboss74, CC BY-SA 4.0, via Wikimedia Commons

I recently came across GAS — Google App Script and immediately the first hurdle I had to overcome to was make my NPM packages available on there. I had to hop through a couple loops to make this happen. I wanted to call out the steps in this blog so it’ll hopefully help someone out there as well.

In Pulse we’ve previously highlighted a couple of approaches for using NPM libraries in Google Apps Script. The linked source post come from, recent guest on Totally Unscripted, Nima Poulad, Senior Software Engineer at DocuSign. Nima highlights a quick and dirty approach of using eval() on hosted NPM libraries, but goes on to show how Browseify can be used to convert NPM libraries, highlighting some considerations for this approach.

Source: How to Make Your NPM Package Available in Google App Script

String validation for Google Apps Script projects

String validation for Google Apps Script projects

Sourabh Choraria has packaged some of the validator.js methods into a Google Apps Script library. Ported validators currently include isUrl and isEmail , date validators and more. Sourabh has also posted the backstory behind this library.

Source: GitHub – validatorgs/validator.gs: String validation for Google Apps Script projects.

SQL for Apps Script – it’s here – Desktop Liberation

alaa kaddour, CC BY-SA 4.0, via Wikimedia Commons

While working on Sheets Workbook functions – converted to Apps Script I realized that I’d need to tackle the query language at some point, so I figured I may as well go the whole hog and implement a comprehensive SQL variant for Apps Script. Luckily though, I found alasql so with a few tweaks it was ready to go!

A couple Google Apps Script community contributors have shared solutions for using the AlaSQL.js library. Latest come from Bruce Mcpherson, which is included as the source link. If you use Bruce’s fiddler library his post is worth checking out as he provides examples showing how both libraries can be used together. Another version of AlaSQL.js you should look at is Alex Ivanov’s AlaSQLGS which also includes some data and code samples.

Source: SQL for Apps Script – it’s here – Desktop Liberation

A library SDK for APIs in Google Apps Scripts … think of it as the Advanced Services with batch Superpowers

More technically, this library can be used to send http requests via UrlFetchApp.fetch or UrlFetchApp.fetchAll , interacting with api endpoints in raw form. By bringing it down to a lowest layer on this platform, you get the following benefits:

  • All of the options, features, and abilities that are available. No compromises.
  • Ability to batch the requests in bulk. Performance can be significantly improved and run times lowered.

If you’re looking for a way to duck under the 6 minute limit to your scripts, the last bullet point should be particularly interesting.

This library comes from Adam Morris and is well worth exploring the source link to discover more about this solution. If you are particularly interested in how to use this library with Google Services it’s worth checking out the section on Notes on createGoogEndpoint and if you are interested here is a Google Sheet of current Google Endpoint names and versions (created with Spencer Easton’s Google APIs Library script)

Sheets Workbook functions in Apps Script – Date and Time and Temporal primer – Desktop Liberation

Timezones

If you are handling data from sheets it might be useful to use the same logic as is available in the worksheet for common tasks rather than reinventing them. Dates and Times are especially complicated as JavaScript dates are not good with timezones and date arithmetic, especially since spreadsheets and scripts can exist in different timezones from each other. I’m using Temporal – dates, times and timezones and the proposed new Date system for ECMAScript to emulate what Sheets functions do, and I’ll go through the implementation as a learning aid for Temporal as much as a documentation of the functions.

Source: Sheets Workbook functions in Apps Script – Date and Time and Temporal primer – Desktop Liberation

Random and fake test data in Sheets with Google Apps Script – Desktop Liberation

Image credit: Bruce Mcpherson

Image credit: Bruce Mcpherson

Sometimes you need to generate some fake data for a spreadsheet. In this post I’ll cover a few utilities in 2 separate libraries that can help with this.

Bruce Mcpherson has put together a Google Apps Script library which is a port of Faker.js and elements of d3.js to make it easier to generate random data in your projects. You can see the full list of Faker.js methods which includes a wide range from names/addresses to dates to just lorem text. The library can also generate various fake datasets, strings and selectors.

Source: Random and fake test data in Sheets with Google Apps Script – Desktop Liberation

Github as an Apps Script cache platform – Desktop Liberation

Use Github as a back end for caching large objects across platforms. It’s possible to use a github repo as the back end for a caching service, and by taking this approach we can share data between Apps script and multiple platforms. It also means you can retrieve the data with the git CLI in addition. It works in exactly the same way as all the other backends. … Using a regular git Repo means you can make it private and share it using the tools already built into Github.

Source: Github as an Apps Script cache platform – Desktop Liberation

Taking Away the Pain from Unit Testing in Google Apps Script

Unit testing is an extremely important practice. It helps developers avoid bugs easily and lets you know when something is broken immediately. … There are numerous libraries that exist for unit testing in JavaScript, including Jest and Mocha; however, they aren’t necessarily well-adapted to run under the Google Apps Script environment. … For that reason, I built my own library with Google Apps Script in mind.

We’ve featured a couple of community contributions around Google Apps Script Unit Testing and if this is a topic that interests you then the related posts section below will link to additional resources. This post from Dmitry Kostyuk is a great addition and the accompanying UnitTestingApp library that is shared in the post has some very useful Google Apps Script related features such as a dedicated method to check your data is a 2D array (particularly useful in the context of handling spreadsheet values). Follow the source link for more details…

Source: Taking Away the Pain from Unit Testing in Google Apps Script

Google Apps Scripts Libraries — How to set them up and turn Slack into a real-time logging platform

This post shows how to setup Libraries in Google Apps Scripts to share code and functions. We will use this while using Slack for logging.

Nice post from Matt “Rudy” Benton on using libraries in your Apps Script projects to make it easier to share code/credentials. Matt illustrates this with a Slack app that has also been documented.

Source: Google Apps Scripts Libraries — How to set them up and turn Slack into a real-time logging platform

ObjectStore: Apps Script library for in-memory storage and retrieval

AppsScripters need a quick and easy way to keep objects hanging around, and to persist them across executions. There are services available but using them effectively is a well-worn problem. Why not solve it once-and-for-all?

Adam Morris, GDE Expert and Workspace dev, brings another library to the table to help developers work more efficiently with data in memory. This library handles in-memory storage as well as writing to the Cache and Properties services for persistent storage in Apps Script projects.

Source: ObjectStore for Apps Script

New Google Apps Script library for working with Google Docs, MS Word, Google Sheets, MS Excel and Google Slides when core/advanced service methods are not available

This is a Google Apps Script library for supporting Document service, Docs API, Spreadsheet service, Sheets API, Slides service and Slides API. The aim of this library is to compensate the processes that they services cannot achieve.

The purpose of this contribution from Tanaike is to extend Google Apps Script to interact with certain types of Google Drive files using methods not included in the existing core or advanced services. Features worth noting are:

  • Google Docs:
    • Retrieve table width and column width from the table. The tables inserted with the default width are included.
  • Google Sheets:
    • Retrieve all images in Google Spreadsheet as an object including the cell range and image blob.
    • Retrieve all comments in Google Spreadsheet as an object including the cell range and comments.
    • Insert images in cells of Google Spreadsheet using the image blob.
    • Create new Google Spreadsheet by setting the custom header and footer.
  • Microsoft Word:
    • Retrieve table width and column width.
  • Microsoft Excel:
    • Retrieve all values and formulas of the cells.
    • Retrieve all sheet names.
    • Retrieve all images as an object including the cell range and image blob.
    • Retrieve all comments as an object including the cell range and comments.

For more details about this library visit the source on Github

Source: tanaikech/DocsServiceApp

Introducing Zapier’s new Gmail add-on

Image: Zapier

Image: Zapier

This add-on makes it easy to move high-value emails into your other apps with just a click, without ever leaving Gmail.

You can use the add-on to create customized one-click workflows that give you seamless productivity—by moving important messages out of a private inbox and into a shared tool like Slack, for example, or by routing emails to apps like Asana to streamline your project management.

Following on from our recent repost of Zapier’s Google Sheets app of the day, Zapier are continuing their love of Google Apps Script with a new Gmail Add-on. The source code for this add-on is proprietary but again useful to see firms investing in G Suite solutions for the marketplace.

Source: Introducing Zapier’s new Gmail add-on – Updates | Zapier

QUnit2GS is a Google Apps Script Library that allows Apps Script projects to be tested using QUnit

QUnit2GS is a Google Apps Script Library that allows Apps Script projects to be tested using the QUnit JavaScript testing framework – qunitjs.com. Just add this library to your project and start writing tests in just a few minutes.

Created by Andrew Roberts and Alejo Grigera Sutro this library will make it easier to adopt test-driven development with your Google Apps Script projects. The site is worth an explore to see what is possible…

Source: Home | QUnitGS2

Goa v8 changes and enhancements for OAuth2 and Google Apps Script

Goa tutorial

v8 and other htmlservice changes meant I had to make a few small changes to cGoa. The good news it’s easier to use than ever, and supports a few new services too. It’s best to look at the service list on github, as that’ll be kept up to date. Here’s a reminder of how to use it.

There are a couple of OAuth 2 Google Apps Script libraries out there but cGoa from Bruce Mcpherson is the easiest one I used, particularly, when it comes to setup. Bruce’s post has more details including various ways you can use the library.

Source: Goa v8 changes and enhancements

RichTextApp – a Google Apps Script library for copying rich text formatting from Google Docs and Sheets

This is a GAS library for copying the rich text with the text styles from Google Document to Google Spreadsheet or from Google Spreadsheet to Google Document using Google Apps Script (GAS). And, also the rich texts in the cells can be converted to HTML format.

Nice little helper library for copying rich text formatting from Google Docs and Sheets. You can view the project README for information on the formats that are currently supported. Personally, the inclusion of the RichTextToHTMLForSpreadsheet method looks particularly useful for converting rich text formatting in Google Sheets cells to HTML for mail merge applications.

Source: tanaikech/RichTextApp

Proof of concept of how to get namespaces (sorta) in Google Apps Scripts libraries

Proof of concept of how to get namespaces (sorta) in Google Apps Scripts libraries – classroomtechtools/NamespacedLib

For the seasoned Google Apps Script library author a continual frustration is the inability to get the online Script Editor to autocomplete if you have sub methods within your namespace. Adam Morris has discovered that the @name attribute can be used to fake this behavior … to a degree.

Source: classroomtechtools/NamespacedLib

Firefast is a Firebase SDK for Apps Script V8 Runtime. Read and write data in Firebase using Google Apps Script

Firebase Realtime Database is a cloud-hosted NoSQL database. Data is stored as JSON and can be accessed in your Web, iOS, Android app using Google’s Firebase SDK. But, Google doesn’t provide such SDK for Apps Script. This library solves that problem. It gives you Firebase SDK for Apps Script.

Nice Google Apps Script library from Mani Doraisamy that makes it easy to read/write data from a Firebase Realtime Database. The site also highlights the performance gain of writing this library from the V8 runtime compared to the older FirebaseApp library shared by Romain Vialard. Mani’s code is open source and if you have issues, feedback or contributions you can add these via the Github repo.

Source: Firefast – Getting Started

Google Apps Script Library Database

Andrew Roberts (@andrewroberts6) is creating a massive database which records information about Apps Script libraries that are publicly available. He includes the name, a short description, project key, and other helpful information (links, last updated, etc) for finding helpful libraries.

Source: Google Apps Script Library Database – Google Sheets

TeslaGAS is a Google Apps Script library that helps writing scripts for your Tesla car

Photo by Afif Kusuma on Unsplash

Photo by Afif Kusuma on Unsplash

TeslaGAS is a library that helps writing scripts that communicate with your Tesla – Zzapps/teslagas

Riël Notermans from Zzapps has published the beginnings of a nice little Google Apps Script library that you can use to communicate with your Tesla car.

Source: Zzapps/teslagas

EncodeApp by tanaike (The Thinker)

EncodeApp is a GAS library for retrieving the encoding set (charset) and doing URL encode with the specific encoding set using Google Apps Script (GAS). – tanaikech/EncodeApp

Library’s project key: 1DsJdRQ9D6nXgbxVVvOroM3EYJOcB197Isvt2Sl4sziW3m9IqqeB9YoWy

Source: tanaikech/EncodeApp

List of over 130 shared Google Apps Script libraries developed by Bruce Mcpherson

Regular Google Apps Script Community contributor Bruce Mcpherson has published a list of all the Google Apps Script libraries he’s developed since 2012. The list includes links to the source repositories and if you spot a library you like the sound of you can search for more information on Bruce’s Desktop Liberation site .

Source: List of shared Apps Script libraries · Issue #31 · brucemcpherson/desktopliberation

Working with Google Apps Script in Visual Studio Code using clasp – Yagisanatode

This little tutorial is going to guide us through the steps that will allow us to work, push and pull Google Apps Script code from the online editor to Visual Studio Code.

Related to the clasp CLI from Google, this short guide gets you set up with clasp, installing an auto-completion library, and pushing a project from VS Code to your Apps Script project online.

Source: Working with Google Apps Script in Visual Studio Code using clasp – Yagisanatode

Resumable Upload For Google Drive with Google Apps Script Example

This is a Javascript library to achieve the resumable upload for Google Drive. When a file more than 5 MB is uploaded to Google Drive with Drive API, the resumable upload is required to be used. tanaikech/ResumableUploadForGoogleDrive_js

Kanshi TANAIKE has some amazing GitHub contributions and this is another one. Whilst this is designed as a Javascript library you can use in any project Kanshi provides and an example of how this could be used in a Google Apps Script add-on.

Source: tanaikech/ResumableUploadForGoogleDrive_js

BkperApp – An example 3rd party client library for Google Apps Script

Google Apps Script library for Bkper.

Bkper “provide a simple way to work with Finances and Accounting on Google Cloud”. The BkperApp is a Google Apps Script library they have published so that other developers have an easy way to interact with the Bkper API. There are a couple of reasons for highlighting BkperApp. First it’s great to see a company invest in developing and publishing a Google Apps Script library for their product. The BkperApp code is worth looking at because the code has been developed in clasp using TypeScript. Finally the code is open source (Apache License 2.0) so if you are thinking of developing a library for your own product BkperApp might provide a useful starting point in terms of how you structure your project.

Source: bkper/bkper-app

syncGoogleScriptRun – use google.script.run with the synchronous process – tanaikech

This is a Javascript library to use “google.script.run” with the synchronous process – tanaikech/syncGoogleScriptRun

Source: tanaikech/syncGoogleScriptRun

Roughly matching text – Desktop Liberation

When dealing with matching in sheets, you sometimes need to get close matches. This post shares the “Rough” namespace of the cUseful library

Source: Roughly matching text – Desktop Liberation

Subscribe to Apps Script Pulse...