UNPKG

@yuanqing/google-sheets

Version:

An easier interface to read from and write to Google Sheets

82 lines (73 loc) 2.16 kB
const nanoid = require('nanoid') const test = require('tape') const { createSpreadsheet, getSpreadsheet } = require('..') const spreadsheetId = '1HA0GGSMChqhxWB4yKWhO9tWF0qtzmLBRnqSg4dqNy2Y' const serviceAccountCredentials = { clientEmail: process.env.CLIENT_EMAIL, privateKey: process.env.PRIVATE_KEY } test('create spreadsheet', async function (t) { t.plan(1) const spreadsheet = await createSpreadsheet(serviceAccountCredentials) t.true(spreadsheet.spreadsheetId) }) test('get spreadsheet', async function (t) { t.plan(1) const spreadsheet = await getSpreadsheet( serviceAccountCredentials, spreadsheetId ) t.true(spreadsheet.spreadsheetId) }) test('get sheet', async function (t) { t.plan(1) const spreadsheet = await getSpreadsheet( serviceAccountCredentials, spreadsheetId ) const sheet = await spreadsheet.getSheet('Sheet1') t.equal(sheet.sheetId, '0') }) test('get all rows', async function (t) { t.plan(1) const spreadsheet = await getSpreadsheet( serviceAccountCredentials, spreadsheetId ) const sheet = await spreadsheet.getSheet('Sheet1') const actual = await sheet.getAllRows() const expected = [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' } ] t.deepEqual(actual, expected) }) test('get rows by range', async function (t) { t.plan(1) const spreadsheet = await getSpreadsheet( serviceAccountCredentials, spreadsheetId ) const sheet = await spreadsheet.getSheet('Sheet1') const actual = await sheet.getRowsByRange(3, 4) const expected = [{ id: 2, name: 'bar' }, { id: 3, name: 'baz' }] t.deepEqual(actual, expected) }) test('add rows', async function (t) { t.plan(1) const spreadsheet = await createSpreadsheet(serviceAccountCredentials) const sheet = await spreadsheet.createSheet(nanoid(), ['id', 'name']) await sheet.addRows([ { id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' } ]) const actual = await sheet.getAllRows() const expected = [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' } ] t.deepEqual(actual, expected) })