Data Connector is a Google Sheets Add-on that lets you import (and export) data to/from Google Sheets

Overview

Data Connector

Data Connector is a Google Sheets Add-on that lets you import (and export) data to/from Google Sheets. Our roadmap:

  1. Connect to JSON/XML/CSV APIs
  2. Import data from any website, including those with JavaScript via a headless browser
  3. JMESPath/XPath/JSONPath/Pup/JQ and other filters
  4. Connect to PostgreSQL, MySQL, and other databases
  5. Run your commands in Google Sheets/Excel/Slack/Airtable

Q: Why create this when there's like a bazillion Add-ons that do the same thing?

A: Privacy! Add-ons in Google Sheets have a lot of power to read your Sheet. Further, connecting to various APIs and databases means we may need to store your API Keys and other information securely (unless, of course, you parameterize your queries). We want to be transparent about our methods and are always open to suggestions on how to improve the code. While other Add-ons might claim to be privacy-centric, you can never be assured until you see the code. Further, no other Add-on fulfilled our wishlist above.

More about how we stack up to our competitors can be found on our website

🏃 How do I run this?

The easiest way to run the Data Connector Add-on is to install it from the Google Workspace Marketplace: https://workspace.google.com/marketplace/app/appname/529655450076

🔨 If, instead, you want to run your own version you will need to setup both the backend API and the Google Sheets parts.

  • Clone this repo:

    git clone https://github.com/brentadamson/dataconnector.git

Backend

  • Set your environment variables:

    IMPORTANT: The JWT_SECRET MUST be the same as the JWT_SECRET environment variable set below in the Google Sheets section.

    export DATACONNECTOR_POSTGRESQL_USER=user
    export DATACONNECTOR_POSTGRESQL_PASSWORD=mypassword
    export DATACONNECTOR_POSTGRESQL_HOST=localhost
    export DATACONNECTOR_POSTGRESQL_DATABASE=mydatabase
    export DATACONNECTOR_POSTGRESQL_PORT=5432
    export DATACONNECTOR_ENCRYPTION_KEY=my-32-bit-hex-encoded-encryption-key
    export DATACONNECTOR_JWT_SECRET=secret
    
  • cd backend/backend/cmd

  • go run .

    Your backend service will be listening at http://127.0.0.1:8000 by default

Google Sheets

  • From the main dataconnector directory:

    cd googlesheets

    npm install

  • Login to clasp, which lets you manage Apps scripts from the commandline:

    npm run login

  • Setup a new Sheet and script by running:

    npm run setup

    If you already have an existing Sheet and script:

    npm run setup:use-id

  • In your new Sheets script, create a new file called env.gs and paste the following code:

    function updateEnvVariables(){
      PropertiesService.getScriptProperties().setProperty('DOMAIN', 'https://api.example.com');
      PropertiesService.getScriptProperties().setProperty('JWT_SECRET', 'secret');
    }
    

    Update the DOMAIN and JWT_SECRET, select the updateEnvVariables in the functions dropdown list and hit the play button.

    IMPORTANT: The JWT_SECRET MUST be the same as the JWT_SECRET environment variable set above in the Backend section.

    Once that's complete, you can delete the env.gs file

  • To make changes to the Add-on, enable hot reloading:

    mkcert -install

    npm run setup:https

    npm run start

    Make some changes in the code and see the changes instantly in the Add-on.

    Note: changes to Code.js will require a restart.

  • To deploy:

    npm run deploy

To contribute

Before you do anything, please open up an issue or assign yourself an existing one. This helps coordinate things.

You might also like...
Go support for Protocol Buffers - Google's data interchange format

Go support for Protocol Buffers - Google's data interchange format Google's data interchange format. Copyright 2010 The Go Authors. https://github.com

Assanlab - JSON input data with counts on how many times you showed an ad on each individual domain

JSON input data with counts on how many times you showed an ad on each individua

gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code
gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code

gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code

grobotstxt is a native Go port of Google's robots.txt parser and matcher library.

grobotstxt grobotstxt is a native Go port of Google's robots.txt parser and matcher C++ library. Direct function-for-function conversion/port Preserve

Go-web-dev - Web Development With Google's Golang Programming Language Code Snippet and Exercises.

Web Development With Google's Golang Programming Language Code Snippet and Exercises This repository contains my code snippets, hands on exercises and

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.
Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Given a list of domains, you resolve them and get the IP addresses.
Given a list of domains, you resolve them and get the IP addresses.

resolveDomains Given a list of domains, you resolve them and get the IP addresses. Installation If you want to make modifications locally and compile

Bridge REMOV will allow you to safely transfer NFT from RMRK to MOVR and backwards

remov Inspiration Our aim is to expand the capabilities of blockchain and make a secure way for transferring NFT between RMRK and MOVR blockchain. The

A tool allows you to inspect in-bound and out-bound dns messages
A tool allows you to inspect in-bound and out-bound dns messages

This tool allows you to inspect in-bound and out-bound dns messages. You can use the tool to poison your own cache. Call ./dns-mitm to start the appli

Owner
Brent Adamson
Brent Adamson
Simple, yet powerful Adcell go client to import data feeds into you projects.

adcell-go Simple, yet powerful Adcell go client to import data feeds into you projects. Explore the docs » View Demo · Report Bug · Request Feature Ta

Matthias Bruns 0 Oct 31, 2021
Provides the function Parallel to create a synchronous in memory pipe and lets you write to and read from the pipe parallelly

iopipe provides the function Parallel to create a synchronous in memory pipe and lets you write to and read from the pipe parallely

Ozgur Erdem 0 Jan 25, 2022
rconn is a multiplatform program for creating generic reverse connections. Lets you consume services that are behind firewall or NAT without opening ports or port-forwarding.

rconn (r[everse] conn[ection]) is a multiplatform program for creating reverse connections. It lets you consume services that are behind NAT and/or fi

Hikmat Jafarli 306 Nov 22, 2022
Proxy your Go Module`s Import Path from your own domain to a public host (e.g. github.com).

Go Modules Remote Import Path Proxy Proxy your Go Module`s Import Path from your own domain to a public host (e.g. github.com). For example Uber (buil

Stefan Kürzeder 2 Nov 2, 2021
gproxy is a tiny service/library for creating lets-encrypt/acme secured gRPC and http reverse proxies

gproxy is a reverse proxy service AND library for creating flexible, expression-based, lets-encrypt/acme secured gRPC/http reverse proxies GProxy as a

null 16 Sep 11, 2022
A Wireguard VPN Server Manager and API to add and remove clients

Wireguard Manager And API A manager and API to add, remove clients as well as other features such as an auto reapplier which deletes and adds back a c

null 143 Nov 22, 2022
Automatically register a list of domain names, add them to Cloudflare and set DNS records.

NameCannon Automatically register a list of domain names, add them as zones on Cloudflare, then add DNS records. Usage $ ./NameCannon --namesiloSecret

Kevin Roleke 1 Jan 26, 2022
ScriptTiger 20 Sep 23, 2022
A proxy to add `/federate` to Thanos monitoring

Thanos Federate Proxy A proxy to convert /federate queries to /v1/api/query and respond in open metrics format. The most common use case for this prox

Snapp Cab Incubators 14 Jul 25, 2022
Protocol Buffers - Google's data interchange format

Protocol Buffers - Google's data interchange format Copyright 2008 Google Inc. https://developers.google.com/protocol-buffers/ Overview Protocol Buffe

Protocol Buffers 57.3k Dec 2, 2022