{"_id":"gsweet","_rev":"58-9084708e0c755a5e1dc8305bb891e317","name":"gsweet","dist-tags":{"latest":"2.0.9","beta":"2.0.1-beta.20"},"versions":{"0.1.5":{"name":"gsweet","version":"0.1.5","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"dotenv":"^6.2.0","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.9.5","chai":"^4.2.0","eslint":"^5.14.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.5"},"gitHead":"daf4428b9dfc94b70d538bba4d723ebaafafd6ce","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@0.1.5","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-n+yq9USMItE1oo7kCEf+cHbHrjj0llfRnKBwrKvvCCUoOxNr5oH8tvdt+SMAf5jmq2DjRTQln14sr7wt+FAT0w==","shasum":"1d0247e4c156881d3052be791f958c5671a5a898","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-0.1.5.tgz","fileCount":17,"unpackedSize":37097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgHiNCRA9TVsSAnZWagAAJpwP/inMQ53NbNcrfHnAa8dm\na4w/gzWKH45hof4DjnKyGg/HSYg92e8S3RowXMfiKe8vrXyChlDZ8LnHO2OZ\nci4GDXShfExwOHiEDRUMKfFIrGvrdyjxjYnLAcJ0B46Y6r3le2QJbl8i7xXc\nZw7SKm5A2C0obYMea+t3lxpUTGMc++2ZzQzorfX9SAg32PDwyVF7XbObs5/S\nNIH5s2e4xcX69hCzMPeQ6z5t1yEr5C/x2gg/tDIdgFFsJjDKp579fBZl6ss5\nsZrI0TO7bhmg6l6jHXG2veStKcpbQ/SKqlLp+GlZkjOJzo8kcplW/CxNJ/Pv\nHP43UmVQuwRgTYpVw3EpNUvLTP/jf2IEvTiJiy2/1F3IE44FBNo+dtGpYQ8A\nh/+qhcPbDNqNciIaR06tjiXccZz6Jj5xefztGVYN+ygRou1xmIClGcdmnVyh\nJmPBHgkwvjdHH0BjDT9Q1/ZmqqDxzCPT6ILvHh/CXboLPJQVpwwLrcc432uf\n1xxHR2whlAkN4+kK+O2VBoUAj9XVkCopQMg6HwGylGybDfep6X1pOd/ZvASM\nB2zyh0PFGTX0R0Wl6zzwfRJ/eRogNlCOFE1bcgXw8O2i4wAl2t48i0KLXMgN\n6Ns4AOtE0Wrg7JsWOD/SrL6rfq8UK7lmwAp0IAcy88sXdFB81jmS1A8r+H5g\nAsxL\r\n=biaN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQeaKAI3NY6GLpj7UVHJ3CkkD0kilLQU9RH6YN4nUW8wIhAM17eRDmcqyizPcJ24Ea0tLSA7qtMINBE0dUhSBwxnMA"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_0.1.5_1551923341286_0.29190995189574265"},"_hasShrinkwrap":false},"0.1.6":{"name":"gsweet","version":"0.1.6","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.9.5","chai":"^4.2.0","eslint":"^5.14.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.5"},"gitHead":"16df5196ec986639dcf26925a1c076aa4d8e65ff","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@0.1.6","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-AO3kWS3kWTw/thkEBe898tstQLEp6BN8GIy8lrb5I60XO6YMdF6DELZs3/E5nL1VJv+/R7gdHOF45f0F7qXE4g==","shasum":"a81a585a0ea8ec21cd834d33904667b868190651","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-0.1.6.tgz","fileCount":18,"unpackedSize":38965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgLquCRA9TVsSAnZWagAACNMQAJ7CwjtT3U65xjko8jeB\n6fXdA+fPRCyc8Ym2kac/6wm0mVnlplstuWUCtBthsdRHcXdMj4fA5uKvr2Nv\n5Fk37iZ9gzBde5TVRrUj0vbbcYjwdzP8AUvEfHfkdMaIyabfBI4Zc1LH5fbT\nDx/SNQZ+V9oMwDLJs09KW+zoWc/6XjPI4o1oj0wIUsjHv8nIdoac2+MX6Q3y\nRVot3IAiw+smNxzY+fI98xngLf+SnxYpdhfHmQYd+CnAxiy0AWQH8wzZKAvX\nEyMnSpVowagj2h8gNuTivckUjlISr9W8eMfnBaWCjDuoWrDJ4+kn2JwRtRkY\nO9etsdz5wJmVm8b9VJ4eneKSG1B8Dxb/KyWvOQut+Z+Y6g/ehA+dMALqywkt\nX5npdt58VEfqd1305e2J9sKe1wcm0mTDoIxevI6YshDiJHu8Rpiw7aphnruM\nEQv/gnoS5o1fwp51jEJUaFTA+mPHfXLaDMJxg2oDYjqp4aPrWaSEwOlrTv8O\ng4qoxuQmTkfiZC1to2qHmNmRvHxDLv2c0hJJVUwy8vaeVUIwIQ7ijAWcRec6\nP0iUuF1tcE04/NmWZcpc8FUZgbV7vBYyVGxcvcOudVcigfGK/F7Auv/aonaR\n6rIDV2KoHiAFq4LdF4MHa07vX4/bX33Fy7I1KwfRQck+tfqJCm9iSXyAn9Ee\nIS81\r\n=Qy/d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn41bjySQckYun9HbDgNjcqdD/ZhOGFQCovg7W7UgH7AIgaBUYaDqRre5klYlTqf8CX6fHIUKh9brNR3KG5cQgPCY="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_0.1.6_1551940269978_0.5765700387470745"},"_hasShrinkwrap":false},"1.0.0":{"name":"gsweet","version":"1.0.0","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.9.5","chai":"^4.2.0","eslint":"^5.14.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.5"},"gitHead":"6636d5265b3df4e1ef723c308fd2849f236af34b","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-p7vQ0bpSj2QmewkHXTAglklUth11dMCq6u6bUaQSYFqeHpEmnFWaaXTzSw0Ge/kRMZtdJSYBCc8myaj1g1jhuA==","shasum":"d41586db4ffa869230cfbda828a8b7bd08676a67","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.0.tgz","fileCount":18,"unpackedSize":38966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgV8+CRA9TVsSAnZWagAAxA8QAIL2oVc87unV5IAAdNSJ\nhzecbQW8OW01fcoc0qV/HlLhqie4YjDiajjfhqzjpZPpRTvsHeHgd82/IOu4\ny13QQD+76G9450boUg8W267eve7IF0nS5Pgwj/Zk+YxQQWginxjVhE94gWzs\nl9yHjO5IFtjuhNkJLOl4xq/hwwJE4ehdY+5U38vBBGaxFIwzJpaPxtbt4nox\nuu7RuEEidbsFfzxrJziSPOkBO/D4Ife7Adkgb3lZjT/NmO5NMreAXUc22T3b\naWs6kwk3vWkHUPJf5V3kTM2AEfwe8fwc5u7ZqY2Jfxm5xQUuGSF92aYJ+GNa\nMPy7SaRN1GwshLlzTqRqlWrdfqEjsYoFmU1pWTKGiX8haLSXt/f1W3t9Ui2m\n58Vprzq59/BmdwUR364EJwzSkz5c9MzS2aS1By+4OG3IP2m9Z1d7E6YaQuHr\nJqH/KXlzMZC89wua+lRe28+i/J6Fiiwu8AUMyMzRuLuM705jonalH0jMmSUk\nS2+DLUG8/kHMibvXzYEd/Uzs0Dc1/VQyHRWQUDyguSY4e2LZOhMWzd0/pgnS\n+qqnP6NfUzj9PqURvdLrmh4voIUey9KoKKN/ID46TDLvXXsn8IpsVoWzVWvG\nQzR/GcxwPN3+zgjflneIDhFJSjVPVxkqCJ5zSe++6Ewy1w5HP39yp8VUGYD1\njQMx\r\n=LqtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGRLDFH3i31GEy6FvcS4y8UVjn3jucjhzG2qbxPmM78GAiEA8T084Qi/jy9qylMweER9da3citboGkMCJCMuO6PdLnE="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.0_1551982397307_0.01278738598713014"},"_hasShrinkwrap":false},"1.0.1":{"name":"gsweet","version":"1.0.1","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"4bc74df23828e61ae20967d49623fa351809e448","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-Z7xtpYlDdHW9Fxs8yCjyQ/xdO/f4IPEyUAKXWyRrV+AnFntT+kwjgrEAX9jz4Y9tH58Ww5f1zYn3b2Ns4vAu+w==","shasum":"07ded45aa80bd12918ca66ee3e8175c12da4811a","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.1.tgz","fileCount":18,"unpackedSize":38844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgeYjCRA9TVsSAnZWagAAjGwQAKOJND9Cm/UKSrA5m1Js\npP0qh3kFxwgSC8jhPwOT/xAoK8j1cDwwqm2ZOVKJFDSt2pUU6nX89wCxe8mN\nMuYWPS4ixBAudkxSMybgyOAgagVhCMxc8fbx5kIYCzElNNJeGJxRG6K0JQNO\nWpweI4e/3CoVqJcqVQaT1TifEjWgpSJbm4ENXyRsg1TJLIqWixfaK0lK3E5D\nEqkXQCmL2WQNKhfltq7GROGJRMS7HSOjovXUs8jnWNeuNdbTZei3/DA5TTVH\nW4Oud/8FIoYimVXYaePONBN2T+a+8FYsGAXIAX9iQ3h82MFYbbEQFG3KtAMJ\nnKN4cqL9gRQIM+13kgUlq4l+KyexL1SlM52cWd1hV4HRYoTSHsoNit0yyfuj\nvAygxxZwJce7Cvy83GdIjShnOobYsrFes0PMZt7eEI8BKgGkCPsbth69Q3TC\nR0U9gWzCYpdvbbNtdHouvfSV/Ih5iYK7NBTEFnwekyyDdZijAsk5VI4lZj/5\naG7RSEQZUhOex2kOu5iVG0HTKNX7p1mOAZulXRc7G83Oee67PAgu1/RJpA+q\nUBOt/z9r5ifyAYR1qQHGhaRPDNVIdLTtKaHKSnEhCZNELWmjIipuJ6I/mqYV\nbq4MmYdKnxKbiMmEsoYVlLfPGBfjIz4EigXiCAqky8dWPc1nYixOKiCuFwZw\n7WbH\r\n=W4Be\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlOZbr593iETOaTCKvWayj8ZzQmZ/fGXcyMXGBk3iGqQIgXA4AJOIu0/8dMzcmuOHtz0npoxZk3bT7i0URsVOEALU="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.1_1552016931011_0.8128452081606186"},"_hasShrinkwrap":false},"1.0.2":{"name":"gsweet","version":"1.0.2","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"281d7bc2aaffdaf18bfbf171d46a7c7881f8b272","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-gonSdqcFQIKTMq/sz3H+/KcnA4jA7P7cW7opNstUFufLrhnk/wJko6wPZwIS+z78onf25gU5A332mZtahr5gJQ==","shasum":"c732f33a4e152c848516453749f85d167831cfb0","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.2.tgz","fileCount":18,"unpackedSize":38944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcggfvCRA9TVsSAnZWagAAhPkQAKAEB+wlQggIcawopQiw\nDu4CkakvO8Gtavnw+AzbHSt9fTkqOi8Yo62zn8+MzWOrafBFd+ilhFIFXHRw\n3z0Xmkek64SDCEfn+8nvbChozovaOjn5/Pb7kf/tZTXftcmbhl73zAJeR0PS\nCybxoLbDcINNf5fwSyg5zGKEted0nb93ps6cIAZBlH1eMUto9c5LjELQ8ujc\nLu/Nlz723wlhb2E0Kw1mEWI19g4jRhSW4g9KH585p4XjKvU+0GIDeVDRCmbc\nT4Ki8zeym2tB2FUm2rRn30qmVp4RsXvNoTGmKIaYXM+8/8UaUZ0hAPqOrTqL\n48lv+3qSgQqaVmXQ/CJ7rfmvffTDhQG5t3JLIF71eM7k+9I7R7OsxIB3bRBO\nqMDWn+1KqHeYeQ/KQyhdZSm1tJrfSCd63PY/6jvKZ1k85WA26qQhOST98DF7\nberXchS/6+Jl01PqdbP2ovg/QnsLDlrUAkOhvnxCNm3fFgcvj2rKBGmxrwuS\nHshVsZEFFbdDw2zkzFzUlwKqnWIHn6F2Sj9/NG8cE3jKO74v9JWy9BqDA8+F\nXpNNyuARLJREgEKK6iUZJI9PDzhnTSrb7HOORF1h9ImiwbQZeMVbroLxMWiF\nUDmrkQbkvJH1qBGSuov2V0gA9CHHRm1ZblkKbcj9aYpdokw7V0paMcqfoemn\nFlw5\r\n=sJx6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnAChJtQX9lN4vInq+HLtOEsPXrnmYX9nVJloPjeVVWAiEArPAXqIZ6zT4jI7x9lDOXvYeooRL5U0tlJuMj3R5TO7Q="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.2_1552025583110_0.5581315456401472"},"_hasShrinkwrap":false},"1.0.3":{"name":"gsweet","version":"1.0.3","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"89da0ec60be874e4928c95dadfc219d44af21006","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-qNNKAd9E03AuvS8VlcBd6KT4zOENDZxYNsIbCz6z4tmkWQtg0wYHN1taI2XY7b0RwYNnKJiJBRkvGr4Vk2gdLQ==","shasum":"ace738748407631a3bccf9a484bb6dc7b9d5ea21","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.3.tgz","fileCount":18,"unpackedSize":39287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcggs1CRA9TVsSAnZWagAAGCsP/297AWkc952sTU7zfiti\nFy1jAFy2T1G7NRAdCb6FqBXEJts8SR2vVPsfTEXXfP1NToKpUw+ONqW0B9Xb\nQwsBmOgO6q6F1F9PyOUeSwOFd+bMXytOIIpSISVk/BrBLY3kQC99SYQFBrCE\nIIfpPeu6/QnVvu1F6e5TqsiM/Xk/ZFMXLMm8ghFl7W03a2ZomMJWQbUnM1YM\n55GwulM3Zoiifxea1m1ipTtPeOkiTH4hH5GgzbPc6wKbtS4Zn8IZetKspcl2\na5ncI2G8n6RkwzdErpbRuJ/XoYRg3KMweahYzEBBeb+u6YWew/MkXbi4ue3k\nbGdD+q0H9fqb7V8bkL8ouweOWCHfmTC5QzM2Z0TVqG1NQP0fFFBiBHfQG+/X\nCrITVEj/5Hz35T5Z0VevQaRwpzsLLsBX3kuZWaOHjOK1P9lrDsjxFiIOuwQI\n3kB/ltdgOu0NJWg9Do5sgC/fjPzFedIOIuGGR747fWdwM1QPFnWLjuVhsjyM\n4NVFnvcKtoWqJWjVQl7B9hZRQhP/MvjFopMewqLS+p7Y+XenKvGv65mFDdUo\n/++7DCtyWkHux8Z9jcjXoQf4ss2NMp83zJ7R67RjaCyNkSpqLrz9JZo2MAMb\nWlAi/n6W3und0ds9YjWCu/qQczsZpLWIyUr4UharsAwkpLBPvgyQdjB3ZgJc\n+gwc\r\n=Derf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID3MBtAuJlbYT3U7wX+1ZAKDWIey0QMiJwtL9B0uDPp/AiEA/nNhr+MOZ6uKD/tvyp0yGa/iokyJCZXO1/ZqG5bm9Pg="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.3_1552026420356_0.6363140468777722"},"_hasShrinkwrap":false},"1.0.4":{"name":"gsweet","version":"1.0.4","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"89da11028d29f17b1a49feee3d800d3d809408f7","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-4z4BQ13wNKAAeSql5rbnU/wjOLwssz6dVOYGrd3rX+2nWdV43WgFk4EqsJlQ6LagkLYH8d+uAXh4Aru5a6qDKA==","shasum":"0d30f8ba45275045e8b1775b746c31a2ad314922","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.4.tgz","fileCount":18,"unpackedSize":39278,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcggzqCRA9TVsSAnZWagAA7ykP/2FMCkO6QRT+Vhti7gw3\nZgOuryxgXoq1qxHfR2C6tRBDgVhLXiQRe7BZex9GttynUjg+gVfF/vhMlEic\n55SgrqDcUwS1mHk4QklY2wqKj9AC0djdNsAUOP+YIehsFwWop6CD5HLhP8v8\n/HWr3zNgizMZxTfG4g5+mhqXpIdeRx0CzIbUp7k3jTfpIrt+rbmDSmmOuX5w\nxQ9D60NxEHuTPxwAAdy1R+UEbAPNaVL2eWHJll6FvkLS8aJriRR6KZcRomCT\nYf0+q4CrczyVeZhWtrPQmouJFgkUFuVOarq1vLdxR51Ye37KhlMY61rzFuOb\nnDts/Lb0HsN5/VSUPH+JMNd2EqiLZ9lSr8yTvSwqNhErMpTJMpeXnWIdaVU0\n6tiYgrGkvnmDHCQuwkvPPeaEKN8TX803nUIBAgJFBueiqRb0NUr51LRXI2zK\ncOYrWm0PiCY9OOa+7Isaf1ZYsWgsTawfrhQHZi581UXOsPjXEydPaTLagZRK\n9cDPnMAuY5OSl+L4HVzMDxZNIJnknAqBh+P5Wd+et5rVLvzS6dDvPSN7gihk\n75Jf2yt8xp/Tb0re37YvglqduzMZrfWCHW0IszMfvo8PNUol0sfh+g5XnIIT\naPAOvKC8lg/I9xDyIeVlvFdA9n2025o2/2StdT1mhY91srXd+Dm4dqEx8NaA\nlhjr\r\n=kE/E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF3rs0/NP9OR1+xeGNJLV3NIc+6MSchMuOw9+c9+CMz7AiBVscXmBcPjipmvd/IdZaYJ43hRgL71JtZMwqMI6A8MTQ=="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.4_1552026857807_0.7740945895791778"},"_hasShrinkwrap":false},"1.0.5":{"name":"gsweet","version":"1.0.5","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"f85b59f15a1161bdf873f8bd3e07ec25fe52a512","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-uk1zm2Zoi5Zr1sc2bPl8t2hhJleinunYgF5Yu4/LAq10uWSYplEIg5DMERZ3u4P+nqQMER2tiTw3gfnXRS4fWg==","shasum":"b5e6b86b8dd8456176718cf61b5c7d6be788a8c5","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.5.tgz","fileCount":18,"unpackedSize":39238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcghgKCRA9TVsSAnZWagAAyWIP/AohZOPCL4tOtGc25u9Y\n11TJpyxLd6A8z+xrUi8+xyrx4ct1hLOSTsfmcQPXv7fhyWSagHFwhNggwZlU\niUhB++wg8aLN14c70KvNALSY+YwoEV5c83ulBJmCSGgX009nAvNJoPfrZm6C\nUZx6Luk7zuYFj4JIoVt0DjOEL5ysdBrqI93kxcVNzaAztNYvIQTFxgj0dOli\ntGqNC1flYSYzoYky9SUK79yVaSchcPWC9FbcpxlY6SkUDOAWsGs0+eXrefCa\nbT3+b/e9dRq78sEtQKhySVvXrQrz+cSHmK2EzqvBWLHqpkm7UV96kNa8WFhm\nnYzeW7FIOnhDWN4ZDFRUQAKtI+MYjZSlTWm4sDgZGS5AyZx9m6Ab34gOpx8P\nK1VHoce/4Dg8gEUFZGwoVLkdOrWQyF67P4pA/IGVuDa8CvdDFVKIR9F42g66\nf+E8tCHh45y4Gn78p5ZId18RaJdfEKwjQppiupD6lpgSdcGJ8N+AksNFfw7p\nqgbjoxmBD54cJkDqyKhpWOqZlKGB14wEYozoLGosbsxzPhVQF4oXamgkJ4zK\nkoHs4BEf5N469aWVFOulcvRTuKOdXXMSwWtpPeebFfqq84Cplkwp4cJ3hRoE\nN/LOxF8bg3P9q4RvfMIuPtROy5rChT1rBfby2s8MvdKLczKgeexyH58txJe9\nThHO\r\n=0Rg9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD//F9gwGjnkjOvgio2YAaverOGKkZBRKi6N7x9LQtPGAIgZVxKw3pt4yRuAyposk8HVEDa7ZaoDLZhv9OBzLw0NIw="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.5_1552029705886_0.31259441211518646"},"_hasShrinkwrap":false},"1.0.6":{"name":"gsweet","version":"1.0.6","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"a2560bc49bb5f02d457eba9b042aa50a2bfe698c","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-egGqaimyLtOXChXnv9dhEYKE8PREtjGHXGUHnvg05TVoYMF5yMMa9PYqJUBV8C2R+PbatVMn4JmpTrwBtp4Syg==","shasum":"8b7a142b9264c1c18a121632331817e122e2718c","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.6.tgz","fileCount":19,"unpackedSize":40236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgwEoCRA9TVsSAnZWagAAfd0P/2qLNU9nyLTWXA9Trz1S\njAYiMYbCS1n+AkoAAmPN8g6k/CRhx1PwXe5uzIRsjBXBP5BBefR6UDE0LEqR\nxqayLqMvcprYILok+ZZ1SoVY7JXMZuoJ+Uly85DT7qy/7COgG4AuTQnsEr67\nIz3v5L2eoHPzb8sfdGEG4dlCP6QH2LeaKLP4aBl5CAqgHNXW8ZVTSHMLKOle\nLTaAgEZ95EZuEh7dBdTrM9ohVhYG8iAAFUcd3jPfXSeR49VKrylKadfNRZV5\nr1x68tM4XfVSHnQaFLHaLxcxnp5aooGanoW2+Xk1zr8JCw5D0gD9kFga8pvk\n69fSpKEcE9yweCr8DlCjhxsyxtReTAcHL6uHYv2RBB3zfHO4ZqGFJejZGeBK\nYsvrHfnYD1VADVpWsfdXxQ84heYSwZ6VVFhH90qHw3sXDA+yWEKuXoach+sE\nR6sCcssNNgBfmJX9zIzxvQHAhhoTJI4QqnFkpKEgTNhdtdyEgO4Fqo6kNoYE\nz5QdHYns0mrIsUgOfLu8REYCYmttn0PJgl8GQctxmvBO286VRqik5oZZiZei\n020BGgJdiPCUxhUu8ytj0KBHvURcz3CSEJjLiwydN8/Gc6AoCAtdS9ghbBQL\nUbajxGm18vW9b4S1vjY2df0/a0pyX12qK9Ec6mm3+aiCuFvSBMocqaSJEL3m\nK6Lc\r\n=Le0a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANqpzTcYF8BoorzxPxD0Qz6l148SKDOZA/Wj2I+2jqYAiAzbxVxLvdurZnfa08N3WOYwRpBm4uxGG1omGSTzjYxcA=="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.6_1552089383472_0.2517398906650985"},"_hasShrinkwrap":false},"1.0.7":{"name":"gsweet","version":"1.0.7","description":"A project designed to help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","sinon":"^7.2.7"},"gitHead":"04672b8aed81747fc3e3feb6027f13cec7cd2333","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-/jtss0Ec8hMTEF2C0rLwGqTtGnuZ0zbR/vazqt7BOjkioT3eRcteNotpH3jTI8UQueE0Qx8tvkHSvg4EYBw/GA==","shasum":"0e7c7fe109f3b21a5372dca393ebceb77147782c","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.7.tgz","fileCount":18,"unpackedSize":39862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgwqSCRA9TVsSAnZWagAABmcP/3V1KsCquTMwu2Z+Zb8Z\nAOYX9PeJCnpm5RxsT8R2h6sjEcN15iqyNi19qkCxStYVTx3z07v05hoGpsSc\nu1FA1oCM9J2KNu120e53nI4Np4zxNAbtR/Bopy4QLEDO/Z4tOlgGUuhXTtb3\ntO3kS2n7+xHPEK2QFN9GmKL4PdW3NzM1thcqQ34P0slA9W7VQzPAKC3Q+UTr\nVwDYZbdnDV3zSLug5OU4Z/Xm5xiXx4bZ3nPkWjehANXkouPfH/AwvX8G+f0a\nAWnEEH+UxGkr3uedoF+se5Z1my/gMx663YLVAlAvuxbFlfu0CgDuvKCHPjL1\n8ATyRytTo+I9l3Z0TYizGHzxf0Q5SxxPCHWN9FECrAYq7QGNr7/pponAIEDw\nSv+cPTaS5p07td0UsFK4Ydot2GzAPwK8NqYJP0mudNQEHL4g9bPrDcDjUvaM\nuuGqTDhidL3Lk7Fhf5soEOrggEsJ4NjRR9LCQMSXSE3uS89mlKwF/voUHiUG\nlRV4XM9rzAvi7lSoqO4kJocY84qkytxjpct4k2t2RGWK7kJGWLE3Um19NcVg\nalkUh3vkPoo/OlKX7O7uhF5nSpVpR9CiusBEtAOxvcRmX12X8w4BGkdL6jcR\nksXrk76n57thA/XdmUgW7YMyVG6kCVQhUwc68PWlinde5qwfgtjfReMup4Yg\nuwNW\r\n=kZLi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIUV/Z50VpDqZ9EfLFJZzH3QL/Rzj0Hw/HZ+SUcRrebgIhAOUqblj0RVy6qQfX677rjGmujG1Oe4xO0AbmvtZK6Ju9"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.7_1552091793847_0.10358343349496946"},"_hasShrinkwrap":false},"1.0.8":{"name":"gsweet","version":"1.0.8","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/ps-dev/gsuite-helper.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"nyc run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","nyc":"^13.3.0","sinon":"^7.2.7"},"gitHead":"c8851e8ad7674b631ca64651a9663ba193e6e839","bugs":{"url":"https://github.com/ps-dev/gsuite-helper/issues"},"homepage":"https://github.com/ps-dev/gsuite-helper#readme","_id":"gsweet@1.0.8","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-CDUfPqG1yM5fKTHVU9Obo1JsfGMugXIkeLnDhE+/sN6m3NbSvAq5Z0VZpu+Y1tFvueCjAem0+t2+WOgERqiEkw==","shasum":"7ff28dd7ff85d31fcf6cd9f20a4ff9ca68e2b62c","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.8.tgz","fileCount":30,"unpackedSize":120155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchKcJCRA9TVsSAnZWagAA2BoP/Ax9kpQLzLfhwt+BqxOA\ns07qP7oerHlmSNesSu08LUGAsPoDlg6Xoo3Jr2IBlUV2nQ95y4aHt5GSChea\nnG/Bwt305mYZoWFWzm7WVKlVvJHVcn9hojYPcfqfYALoLjUlYbOll05LJz2h\nF8g4lfo1T5xTWuiDMyWR0/3dTmFn8lYXQIj3OTGm/d7oRHRIB8nhK7JZojsq\nSI3SIvcCxgtGnvi8zjt31HTFYGXgssmDhGFzbc2kbRWHxRnkVGGi80lUcdDb\naVXhjC9cBKXq0QD2EguFIPOfGfuidpYHMcn/4ic1PbvqLXFGCXW40ohW2UDq\nYAr5xfsxz0Yq92C9UcMka88/d0/nCGAV50Lpl29z/9TNligpTM5Mi8GFRECF\nHZx/bfmZsL5Lr4kL7rZ+YuIG7DIlIQ1Fz8L62SkDjqxX8r+NH7aHk75jJUyw\n5ShuENTiV7pUEFeJnmSqLUABGAW9wnlxslpd3RQuag72VEOE5DuY9v7ev1iO\nOUI5OaNdn/meJqa1o6uW4ETM8enm3+p1LkRTiBWTvJYymtcnnLwPKBKxUQg6\nmIL99UDB7jrq1e8J9GxG7Gkh2ryA66du86bRCozhoz85aWu2EE+Ie/ZEav67\nJ2gDxHW4EVcW4tY2TRjOg8KDA17OJHJpCWPQhyZtC9m+uPpARHIaV/n6PJ9q\nRUqg\r\n=loGG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1LZ2GzxLQFc7H8V2699L5vE7OYeJwafwGYweU0P1nuwIhAJTGsjS/NPEZqJ24PucKwwyA3iLQGoDJLpihQB21n4v5"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.8_1552197384832_0.4106061543309101"},"_hasShrinkwrap":false},"1.0.9":{"name":"gsweet","version":"1.0.9","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"nyc run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.10.5","chai":"^4.2.0","eslint":"^5.15.1","jsdoc":"^3.5.5","mocha":"^6.0.2","npm-run-all":"^4.1.5","nyc":"^13.3.0","sinon":"^7.2.7"},"gitHead":"5ae8abfb343084ec638e3831b7d5f168013560af","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.0.9","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-3ToWL2xF51RfnDW19i/Olsl0ZDgi+nRM67lhnWA7aNN17/FM2MLbV2KFWoV6Ixq3l/fY4TJI3BwKLXFGUkm6ow==","shasum":"6be9e1f05ea1461cb5b71762849639bf36dbdbea","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.0.9.tgz","fileCount":30,"unpackedSize":120153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJchKd+CRA9TVsSAnZWagAAMJ4P/3rWK1Vk4hMVJ2DMbWfC\nXt65MsOQIcEcjTnDq20F0bFwo4zZU48EZnfIMe6zaf1qT54ECQUtAZZBd4mv\n0+vwXK23foq7jIL0uoxZVuOrdcfQz1uS/gV12ArQjwc3GDKBsTJpsYtlbpkz\n+OOiUuVTyd8nwGskFPXE6F6ntIiXfMY7SlskLrciUSojpYdGW2MJpF5+njZg\nioRMpWSEF10Zvlm9iRQD39V2k8wJ9WcOatk5LKQPL3W5l2vSdgdpgmXTEW72\nx3JLmwAeEbz+NJtUWEvY2yZfIJHbzlsmhPjvvTQs48Yd3ryspEML1xNMmuq2\nd7XLdTbRZ/pOnVnoYHNfzOCdniXpTKhzD2CLv6E5SbNS3YGQLxF4z9XYi0lr\nq7n1NVJF3NMPUy7u8qlgl8eVTgtL0Y8CVLKv7WwEwPMLrDFNjVCzF4+N9lQ/\nk3Y/4zd+h092X/0cnSGCV/UEirUAEOPwYplsJ3IuVSsLDOxbKNE5E+35QaSv\nI5zoxPVf23z1+3b86eJ0CZsKSX0xtswy1mQfZiu6JGlo/KSbUTVUoVroyn5f\nlG7hqC74D1fz5PdCH1/XZWexjeZdz8AzukSQdQzMUMEBZW8zEd4kGPQfz5N6\n15AZlKdCe3bZYx+t1Qs0fXwqYIHx/kN5+OzzVbGuUsXmVqXnTLnv0HJTqNbg\nRGt4\r\n=linR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIzkbbQJ50Ex76sQ7RscNRiSx45I0cTkGJJ/VDMNvVfwIhANMKwE1T6EHpkiT3RP0x9YHkmURZV/5vWYpiBQLMXwTR"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.0.9_1552197501654_0.3904454802996342"},"_hasShrinkwrap":false},"1.1.0":{"name":"gsweet","version":"1.1.0","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.testi.js\" ","test:all":"nyc run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"eslint src --color","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","one":"run-p doc lint test audit"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"5cb558f8074d472ab32ecf8d9155f905e584de03","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-7UV6++tyLxRzxuVWYHXyaVILIPOdiuGrmtSP+CJHKY2MC8IK8dHvp2f83aqM55NScsd7oksRE0JUDfL2yTXOcA==","shasum":"87c5178fc28184877a3dae0a3248613cd31b9d45","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.0.tgz","fileCount":30,"unpackedSize":120686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciHUECRA9TVsSAnZWagAAmUIP/jJUbnX+x8fy3WQH4xbs\nwFmt5NHaEoKXPI+gf6xn+xPhhq2hf0Y+0rfNUuWCdjTWfqs+5kuuOKTZTJle\nVZyvQpn7hWQ6/ZieOhu3GnhFQTsDNkubI/z6l/O1l0hIFyqhdc5JUgdL1qE6\nqmYmvEGD9c6ADI8teMQg9L2FqwRdpPhWD/ojXv2fDip+Iwv8NvFhGpcK2KfR\n1xuLOoe3acZFycKaAUeVD3POjr3QWs16evVjunfHFqIKbpdn/aXKbjWkVTZu\nrEbDjPwXezxNb84iV7gCHpw/1PKnW+ERnPOmjHI2FF+McmAK5I9Y+OsO2RJO\nRd7l+wWZZbByMz3LOEJGmi8trdWXKoZgBVAvOLJi4jRovEvVxasGYj3JzllY\n7Wh4ELr7txUbNvQ1NJef6jlxj1/6ntAlkY30ppnQ6Aba8HEt948dolrp7u5Z\nF3bInG8zVAX8NeHI9BnJH+Xg+UYDKdQrOE4/be60jqVWOaHL3RKPTTwWSf4+\nncmOMSWYYGP2eeIlQe9+HWbX0HVBSAhWZGqyglAvEqNBsXDHJCIdvTFX5MJf\nHRBYr51NPPUkZC22t2BIjJKYb/139L+1+vjTVpgYWByD7FJS0yCdmkWobiHN\nBqODWOi5BL/NMBxTa3ZgXPmJy9poP5yBDwiRjgOP9VHUXRBKV5aUeKOzrIpa\nSLB8\r\n=8KNK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICb47JsNp8rzAvsCCJGF57HrdYaNa3FCZ/KsszwnKZgHAiEAhfwLDXwqteVFsQoJ1QfCyOjcXAw5bg227guGShiGmsY="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.0_1552446723526_0.46916766447107605"},"_hasShrinkwrap":false},"1.1.1":{"name":"gsweet","version":"1.1.1","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p test   test:int","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","one":"run-p doc lint test audit"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"5bfb3c23b4cbc0e90889e3a086f1e56ff3caa827","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-Pu2ioLtyAmmYJeGgCfqle7bFJ9j7KS9TVf4iUAk5rLCKHzybQPTHAYdrB4MLOl//PKVPpYBJXzD7juiqWPELGA==","shasum":"8106ccaa1fdc64554218a154268c3c42c61314e9","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.1.tgz","fileCount":25,"unpackedSize":72653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciHzSCRA9TVsSAnZWagAA+bcP/0DcDXa4jcZepqVkk8Gv\nI/WAgLZBIsRphqfJfK9fMyaNB7UxoVV3jw3X0cVx+wt693uJFam7JR7yirbZ\n+9Z300XyKU2JSt4CIIB8K1YrgoH3aaK9DW+v2Xj66MsRTwt0Zlg8fzar8tyD\nGm3z1uektGtAg/ahNL52GJKGyx+8nqzdkkYEtzReXE3PyiAxdlzHuP2qO43L\nT8rqc2GWJ5hSPZuLGM2zSwXxYPC6QEUcXPCk7N4qDhDvswpi2l0dxglfFVST\npDtPL1uV0kdc7NMzLKFYz2iop1lNagfKfQaDZWrKgBfftbMXcFLbkJHxSm5b\nKAGDl94TbTAcAdPbLw4EgO//vOC8C+e2uBUPw+GjEKm+RJQ+/L5lgE98Egfy\njdkXj2w3NdreGxdY0XvdnlsAIPgMs/imd62/sQ2+mjCOnMxy0y9JbPp5UHXH\newFRgZh/V2RXZUgruE+4xHsWPlx+eJQm7SjUFsjTTecrU+K4jLBt3KVLa4Hh\nl21OkowS2ZE5avft+t3QTrqHZJ10vMKuMCU1ambOYv8JsXV0XWNkijCKX6L3\nZJKrTSstpsYSmozp/ZHHzT5o+GSyRdyleI7nLV1QgwMCvw5SnTPZobIBTP/O\nVrihhxrDMYSSfN22KhcWC9RviAywTANl9AnvUl3Nq3RBt0Sl2eQ5hMGaBhDL\njyM6\r\n=Eecs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgQvvvt9j8LBsrlKLne7EDXWmV6620Y7PBeAoj+8m7ZQIhALJQjvZ2ENBnwcc95vAdcvpZaeEaXhX4KgvgPPUgEENG"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.1_1552448722288_0.8276362863738471"},"_hasShrinkwrap":false},"1.1.3":{"name":"gsweet","version":"1.1.3","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test audit --serial  build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"fda794a8b7c221135ff7f9345c85f03c028dc7ce","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"dist":{"integrity":"sha512-HVur0zb/cs2lKYbKVcTREC5XelewMdo1BQvH676dh6r5sei0jw7GvQ8KJjk8ROKAm4X8kZhumdykPJ/GPg242w==","shasum":"8637b332b66e620de579bc3106cfbe8afcac1f65","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.3.tgz","fileCount":30,"unpackedSize":121347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckZZDCRA9TVsSAnZWagAAV3AP/0p7Uj/Kez2yRBffesxg\njX7RXBjgPAmXLk7ihi3Wx4FqT/mDk/eU8P7B5YveSgHvMoWuptZjpwM7n4eo\nzvt132VLU7jAzBAYOxDPnjznkiJRD1F1BxqG10Ld+U4iELXj2f4h4N0whKUu\nfRdzevzO0LwgRihaRkNRU/2Xj1HMJ17IHKtzpt4hBDnykQxN/Fxm7vni68EW\nId5HylLVxBYZDGpYy6PjLJ0mLk1d9Ucl+7BxnFyRwIuQJC8Q85/ww/jpZ+hL\nuKWeBKEZfSsjWW3Q+Q++ylyEABJY/iMqrVnqI1d2+9IkGZNsBIxUXMoHdyNA\nQKlSDFWJxickru2msXuHz8S3mSExUr8gOsg0AoCLcQgU6ppRsm9LkxiRypx7\nEfgKqzRHnf9isJOcJ6qvOIoFrk0qY7P9l9OqNr0bE7az5cmNtfQkfORGySYx\nVQY0J61GgFrmgzCB5SjYJaoW39S20nHu8B+qI/gFCArtfBoHORu2ed8vjGEb\nIonoHXQYcuZ5vxe2BcnKqvzzcp9wVS0IQE0hKuk6VDqC+pDWnE0dxj6WzNzC\nzApY79njpq2LqFPc+N/HVY01qbWM8kDVQ+9VgDpN69VaLE6iy0539Jcgoo8U\n1ftfPFWiFdxaP4zcO7Yl5VOtxdUOzVzxBmlEZsEGfUs92wsBQWvQ6wc+rQnK\nZ80Z\r\n=b+yH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhPnpZBqzjE+HOPVOF+aR03JQikBuEABcieo+VfCEzCQIgdz2HXdtoxsRUHHsdhPBjMqAngenG+1vEm0nP3Nd12KY="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.3_1553045059235_0.32470789905127173"},"_hasShrinkwrap":false},"1.1.4":{"name":"gsweet","version":"1.1.4","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"2720d50b39e53c49169cb8ce8f4a0604cee407d7","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.4","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1jbBYJWbcmJWB7DrcWtYTxS17NZRt0Ga9D9aXZYXsEAHqRIK8E23yLs9k7uw9Xulzilae6jEML5pTKSzQeAx3Q==","shasum":"dc8b305f2532291233bf901e1013d18eae79b20f","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.4.tgz","fileCount":73,"unpackedSize":1250203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJclAVbCRA9TVsSAnZWagAAI9MP/joEoyxzTCrm4UtQttpw\nGAoHrSpKb2tA/kMxLkdQjWUesopPOoE5RhmmYPBxzDh0UW53NQndqMQQkdHu\nCPaHx4tYzAt56viO8H0+3279ZiYwHfGMpd2dSHghSD+hVLB10+OKSe+r6LBC\nN+7j2WgW63Boxb8TLBfborQEL4lvAHFvdPEL/85sJRZ5ZZN8/EyloJ51d8aB\neLVRkRmiWtpwsr/8ZrozfVOWGccklwEUrW0elhZcdxQWNy2mDOrTr58cQFXR\nwe3bJLSAN+Rx81rJIJ+WKEwP9qFXZMRAdm/J1Gsutwztch9AU1XooyBYye00\n69ceiwX8wIcwh2bQoFeEyV6yzCwKcLMkTKhy/PKSbyNGkRi8wUa5JUVFtGih\nMv9QugItw9eUf8E/k1io1CJ3kYI/VGWpB3DhjsuUDszbXZBTe4bLQgc5Cdps\nsLNFaJSIshVLVvjEzdWELSw0kFRFdgfQWUh5kYdkydT1X5xwaOJ+UgLBvoRs\nSyaQVDidr6R83B9LKAoi5vi0bpH9voSjt4aKYTzIsr55yn4HsVBWO4oRSP9f\nZJkWnJl5PXWGQWQdzDzTLrjD4iE+l06GQ4J+VxH5EW0QA8UsQubNSK6ptiZ+\nwXoqasBttR+8AlgZitUC0R7/4vwnGS6+STX54S03mmRoqS0lA4Sa/Tqi2E0n\nokJP\r\n=LEqC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2J9Z0n0wIPYN0reiKKpKingjlVijbU7HoFy//i4Xf1wIgHujlpXAlgoukCzXgAi+usEozd/Fzxw6l9lISa8i/aKE="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.4_1553204570364_0.26587474305108816"},"_hasShrinkwrap":false},"1.1.5":{"name":"gsweet","version":"1.1.5","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"128609adc18f70ad7818f41d5dad6fe8a59e7215","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.5","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hYZWrzfVM1eyuNeAZ8AE1osYR6b6rTP2SIXNT6gWo3ioJaOBJLc/GgOH9xNLXEib9vxrToy2zeba/UCfbKxOpg==","shasum":"f706aed99761c81d10d15ef1752e29f839e152a7","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.5.tgz","fileCount":73,"unpackedSize":1250193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJclAaBCRA9TVsSAnZWagAALIQQAJVDkPMuywuuf0dBCvrI\nnaIuNi/6n+fe2BajAi8Fe47WkfzDIoDmha1Nh8HZCFe9R7+uRFr80b6FhKxX\nQd9aWl0mkkJgsi7zI3e9H+jRqOSF92n1LKatlMkrHFUQ4L8KhNrm/GieQLjI\nSGt2AOat4psqk8q/V9z8yhlVFeTGukJZmZja900VDXIpXPHcF5PPLso7Xg2b\nIdWBY12UXOzd/5Msflhl19X0xep89hLLHrFF+I0LMROY+pJoo8Tg/ugCsjix\nv+I35C3FN5X+vpank2v5HC8IE7Y9t3nJWkzdTG/ceRRT6wlFLHiRyR+QWWLT\nEIcU2oHL76NsEIGge+lXh12iPO9uzTyJLxGJrhIhiV8W+Jq0YYflmyCIv+0J\nt8q3j5GTgPD3AMIUvMpR+MeTQDGOQpVEZ5TAJrLYln9FYlwlqTclvCs5we4D\nl/nb7t5+T6FEKHODVSgzOKHXNgjnUGe6/D6DOqXrw+O3FLNi7/Il+RhNgXRL\nJ/x4szixUT1KY/7yNQQpP56kAFltb6d2MYZbqVP/zWJd77NZC6deJXUxWA8a\nIDVidohU+QbsE7oAxSJ8RpTW69IdSbHPeVIaOI74BvhimUchi0NxX8rK8FAD\nYS+L+01+3HsIieD5sJDclmDc8xmn/nToHGAfA6WgFZQ2XEFpRI7aK9JE/ImU\nAT/Y\r\n=GGvv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD79c3oRJiUU9X8Y7KEhmGJpa5a1Hl0BEqyK4asVWZK0AIgMJTqLebcFnYaIo5SAAkRrtQvQC6tzIDG02ZuTNSFOI0="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.5_1553204865396_0.921239465267335"},"_hasShrinkwrap":false},"1.1.6":{"name":"gsweet","version":"1.1.6","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"gitHead":"ab0341b9bf16963894ffee5290aff6ff3661c32d","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@1.1.6","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Kbgddgn9TCAc3/iN0nU1rNvFuMiMTU+vPk4TQDkG3eXfH1u3q00yrviVveueWl558lB62uD5TiANZElaGRUkvQ==","shasum":"ec1605153ef022fb8434358a1c5c1a64d6fab9fd","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-1.1.6.tgz","fileCount":73,"unpackedSize":1250263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcmUpXCRA9TVsSAnZWagAAwgkP/1lGZUzurjcxxtEgKDw2\nmecyYPPOTZiirCA7+9Zhtkk8G5ABRR2NiaHmE8lDnH5LF0AXurfTqKcUCRck\nqshyLBgBfk6KQ4lYkzhKjcpwUDptg3DX0MPX3y4DKGcP0ru9idqHCPZeXxgW\nxv3w3MjBozfn0XlPypi1/H5WqE8rkpfH9ogu667KsqFP9p/X0SMBwmpaFpgG\nsuyvRgSF2E2PmC3K4JyXr5jtBmjuX+WAoqXeo4kJcVTq1hqDllokU+W4QdXs\nOQuY0w5cW5S+9L0jp59LINy2vgrhEQX2SxU1RjgDRkkamzf8WrgeuTrsvIdC\n7r9d29xlT1nQAi7c3B3P+ddZWaeaUTWTGh682KttVA18famSkUVNON/9upPo\nMV/bST37LMZuAoXLdKl4RLgxmZRSpGTnzqy58UTrHw+sNOSgbLbu8mv/8XhM\neGLKPJuUjHDNNCgPRF1ttkxzRWLW+js76rcSdW4nCsWV7sEX1+/eq4bH+OSn\nVWC2f+hYeOxVaJrLhdCgv/VwfVdmOa8+z5a2bbAJGkyFcDUzDgEfavwRpfa+\nQ7B2+JeZUJ00i0dQVQuRE/ZFHK/yvmCLjYFLX3YrRVXIZP93yoiaVi3/YK97\n0maKz7y8JlYLEP02Y3L+TKoY2xqAZ80mZPR/wM6MdQB+hgCzSoxAMT+Tp/+J\nPtC+\r\n=IJ/e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGiZGCu4TKZWzrYE4SWNTbUPOu7zrgVyM01qVYqUDTJ+AiEA2/5ZEqEfwGOOof8oUaQcchVwjJf8zZCVRxnFkObQjuU="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_1.1.6_1553549910705_0.5818895036835545"},"_hasShrinkwrap":false},"2.0.0-beta-2":{"name":"gsweet","version":"2.0.0-beta-2","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet(\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\");\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\nconst gsweet = new Gsweet(\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\");\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"098c6cf32545a11b1f46ec04e44c7f10b310470e","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta-2","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nUb2a1PBf7ziO0VxCW5Ig6zRy/bUqMT8bJ3n11bsSJZsRfH8mUdamiW4U63AXUYQdF7FLoAKqw11865/xAgrVg==","shasum":"0567ea0c5ac81a9dfa41cb271ea5ae4c94d14498","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta-2.tgz","fileCount":76,"unpackedSize":1291582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1IM1CRA9TVsSAnZWagAAd+AP/0alreOzZAQD2aXiRYjI\nPCKU2HLpctV/KdTlJPDdf/Lx4q4cCoi/k0jxjm13330eHdyttWIXEi4QC/aI\nibQUd8QWxNUNyNR/rnVlC9twJYlw5xIOPXqhK27hnU473DR0/rJ2e6pRWJRc\n1Sysp6nDHKEtGcQLILicn0kp8g1cFdIB8uK4aKUAfHr6fJDk6jFjRaEr7LYS\nnq2LnIzS279del2PoRiSc/MRjrT3bB+S4bCf4gGIHDXJbo/nNXPHgYn/uvCa\n9VA+J4MAiFQvsliOf1q8OvJDbjKvYqzCCqOPNdvfX0AwD+2qFgS8hHrnpSyR\n4wmveLLwl68mAwNna7o0x0An42W/VSiFFp4E17+K65bOS6Ej1FBJ8De0tNNx\nxVZ4IKJ7UoTzCTFzG8ZjC5AuResWItfLqAcRKj0AFH2ZnTp/oK6+3pzLBgI8\nuU8vAdv1oSZdPhMgINiAoDunzw8/VMZhZWTMnD3YDlfAG0utdTqLWYF3DuWY\nDrCAvsUxKlDYTRH8xO9IehUhe+JSHex8JlIan3NsF0z7lF1tKsIzdE3i8SSr\nWr2x0AqyDJj17cB4aU6wHS9l8/gZ06UZWwAF50coemLLOfaigJLpkyFwoPRQ\n8UdG0DXukS/iLrH6efuBeoUqpZeAvmL5zT7ibepsv5GjUpoObsqJxXjvxxs9\nJYqf\r\n=qQbD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC22agVpCmerVeR239vKUjyYNyaSraxiAVqbqHmbNJuHgIhAOWnd6GkaHz6rlWzIVjCH4vuzz9hyTkryBoJ9Lig9F0i"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta-2_1557431092253_0.4787828256781843"},"_hasShrinkwrap":false},"2.0.0-beta-3":{"name":"gsweet","version":"2.0.0-beta-3","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet(\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\");\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\nconst gsweet = new Gsweet(\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\");\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"3c698b407827ecf19233635b30bf27dd8674d789","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta-3","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-T87Yt0oLLEAb+Pz9BiBl6SxR4UosGN/2wkiCq+dgvlFg2uNlUbM3GPEIU55W+LbhdUtxVtgPQhVWiO1DMbDlsA==","shasum":"6ab00223c619bca8c92d19200eaa51eb93b995e5","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta-3.tgz","fileCount":76,"unpackedSize":1291582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1IacCRA9TVsSAnZWagAABqEP/1g2oYiPGqWPfDjbVAJa\nqP3JCps3xbJ0FoinHHD+so2RbC6LVFsmLqjmwuqJnU6RzTBqC0TGA3iBzSwn\nu4le19qiK+D6xpDiSw88YOlSO8Dyvo0l+JjKXKvJpMy3gzWUHXS4igSALdgL\nKDc9O/l/neCPVQg5vHsKw7pgST+hHK63jzNZkqRLKU8ShA4RXwmfi0En2pBO\nI6Pq0QI1r82kF6xKbAesgf8UZZLwKJX117YQuasldiE0zosWfLqk84PayDCL\nohwg1qBB0o6NVZb2XjmhfQb3iD65GLdpK+3YFlv4VU2TWAstiAqXfohHP3yI\nnhJP0q7qVZO7w4iSos+kNrrhR2gkcb1k2iD5O+Wt76ZdvgvJ/etLuzLT57ZQ\nkoXDfAWkYcCkufu5bc2aCJFlS7CWVqrogCm7Ab+C3Ntk2jRhGTAYSWhKFK2Z\nETHaUtLBzCMJQHPitY2DJ9PnC+Pis3z34SQGyDJzxYLN4+2Z/Sg7VdR3iKzS\ncaRWixH5ZQ/QeqDr4q+PmpTgclT531hvCtoEwSxDe5r+WDtgU07Z5TjoxEhw\ncUk4lT1n3Mljtsg8qZxpguKVQSRv79d+Vwv2UdQ1wx9HgTbvMhzwuYjQxSLs\nbRicLmvWdbofRfTRovA592s4tWLVq+NIxmpi4UTzvwvJlw+fzEdmOOYUeYVP\ny+HM\r\n=9Jv9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJQMxPTm1HR4EQ11sUVM32en8pKlJmQ+mgnLjM345dogIhALppujT6lt3OmnTjb34DBDIOVT2n3x9cFQgG9X7PI3TB"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta-3_1557431963440_0.19835846534167767"},"_hasShrinkwrap":false},"2.0.0-beta-4":{"name":"gsweet","version":"2.0.0-beta-4","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"63221d9c73545ec274df8e26da409e9149fc9b63","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta-4","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LEG2HGHS6uOpJ9R3fUl+hAR4oYDSEyi6liycmiuNapDBoFMHLFbibEBlOEn4+53KPLd7Ei8T17d0e8uKY0lzjA==","shasum":"a56f888739a8307b18e59930622f8af77bc16b2d","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta-4.tgz","fileCount":76,"unpackedSize":1292623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1ekXCRA9TVsSAnZWagAAFXkP/2MyRut90X/Khg39u/P4\n9AtTbwBWIkDZDwZ6Bw5Y/giPb8XdD2olB7GrF7EF+8/WXtgEUcOpOSmNNaah\nG+llV6NVEn/liS7KzAziytl4qU2y/ozfUS16cuQ2aLAz58y5plGqXJYC50hi\neyjKaPwXlvw1CRKX1zJBCjWh5UgwvE/em8kJrDDZp99oTHhLpBfqAs8+aQ/u\nQVkW1bZyvlSX0574X+osCzEdw8W2Pn9gSJWq3a9CCwFDECY9R+ypYgbml5cx\nOibxg86/TEM0wcZGODni2afWEj5JVu3nyZ5lWGZGQErQqtVDR/1HwZKfqKMW\neDNHfNWs8m68qrMuE9b/GkM4mipD4kxwh8NSOD28ZEMILoY98QOOl9nLlamX\nnn/ZnHksBrQxrOP0miMnB2oVihG8GBonh+kH2CljJkdJRtCAkVZH/T9xsLip\nQN/vzfqYb1wfefY4JsjghGLaso3MLKceEDjXe1WrAdGgg6ts3ydOaN4G7B8g\nudW81cIV24CjwxoWWI9bQA6k0Kj3abfjupsGFqmHbt9bSP+z8GFzzgpyIaxI\nrjwDQwuXAviXtXuAzWw9OlWS/T16fEkxGaK9iJM4g6VgibHA/zbE9z+fNbXk\n4B3N3Zwu9F5QAy4O0Om5x+WgpVB9Ai9B8pwcDeRfzr7KRgHludCIlHldtKrb\nno1i\r\n=kAfv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAsMjcW+m1GFHV6ti3BdpzLIVt7OW5zfulmaMk5FMsHGAiEAntKeT7zWo7DXwIBwiPlW8/vKr+o8Pj7LF5dCtqjUlA8="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta-4_1557522710723_0.8157605424822789"},"_hasShrinkwrap":false},"2.0.0-beta-5":{"name":"gsweet","version":"2.0.0-beta-5","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./src/gsweetTypes.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"x.5.5","mocha":"x.0.2","npm-run-all":"x.1.5","nyc":"x.3.0","sinon":"x.2.7"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"c29592d733e9018595de0aecdaf4c6b8e138330c","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta-5","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-YxvMDvZBbPY6GcMN1EmkgTz25Bsw2BXTxUhtcX20UHq9BAUNbj5xXNepnK5H2y1rAPiSjN+D5aQrF+LiWkPx+g==","shasum":"aa069a940b548a306fa7a93ca19d625798881f1a","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta-5.tgz","fileCount":76,"unpackedSize":1294353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc176tCRA9TVsSAnZWagAAErMP/07VzcBma+Z0HZz/H8ht\nc0MH60w54miG+w3hXUEOHVrkme8LCg/EPr3N55UaXVMkkFOrRIpM5s4Zu42V\nx0yr6YyQxmDi0mkpJT9tuF3fyopiBL9oX7K762S2MRb33UVvXqHQwUR2+BEV\nDE3SkBb38KcMJUEMvrWGrexlqDK0S2hT/SJBGlD2HsgVVypYRYlt5xzwL+1/\nTL34hxwBTOcTmPKBPVUxZc7Qb/Ltp3+yVQ7fmaIwjatYH8mQQRiJ/apCrb+a\nYHG1np1IK8z97jr4MvlhsU0i7SHfkFWPsDhuxiYlfHRn87uc8X4vSFP5Z2hl\nwZLCo/ng2SNbBxRey4xcJP9xD/hq0hRbTDlPM4JD9BQpwKeoLkBaHT8e8eX0\nCi4CTiBpUPRZL6XrIxC6Ih4OrzqMHHRJh551M0+fn9LYEOk9rAE1vC92dQyy\nYirBI1RP6lGQejMWKEZJa8bLBIImuQIrMXrt1QVB4qm3ejHmsus8ha1AVU8f\nhhw6Ph1YzruPlWlA64i50z+JQpQjeSytsnQLpLkiMPN++CZ4u4VczXIvb51K\nWA4dCwl2thalneJ5RD44QJwqWR1HO88eZ3gWDOozTzucqxgIZLKPxstq70q2\nDK47+lgFq8UYAMKaNDNbA/gWkXxGh/YyhAXqDvv3Yx6jWLy9XUOpb1UNIGKQ\nhXLQ\r\n=TcHq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIcouo3WnV0OrI967LfEIAaA9kM38FDpPVuil7OPG50AIgIVasFGAb5joubKzNEMmm21aUUYHPaO4YY6xlYKwdcHg="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta-5_1557642924377_0.820981571846052"},"_hasShrinkwrap":false},"2.0.0-beta.9":{"name":"gsweet","version":"2.0.0-beta.9","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"3b01f3d7c0f9737cbb7532f8487b77e5973eef19","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta.9","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bWtryFYd1Z5rsvXjMfqBlhuuZys1s451r9xWOmc5NVmg2bj4lelLAtLR3LM9mgRxFKHypKNlSww1Trwjhq4myg==","shasum":"43e94f411c460da5197623ceb060297e21a4374b","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta.9.tgz","fileCount":78,"unpackedSize":1323592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8fgvCRA9TVsSAnZWagAAluAP/jDD1YEeZmbO2NX7Sfqn\nM0ocwNA9hE59jBnDhg+BhaK7iylNcUEHqIPt+5q/Cp11NnZmTnrBbu722IPW\ngEG+sHkdPPGivS+Px9nt7IEjmUxTCZJmt3wr9DkueSM+8B9iobu9QKSkNnae\nqmhEvk16ATg3FOH7afcv/mv1esTdHrGndio2fys6pXBlzOMX82lZa9WB3tYd\nRjdmMBNTlGsbySJbf0MKQJVVMqIInYmKHUXfr00mulfCmQbBrHoOVQ1x8xUW\nPRzrgWvAn5FcI6D4A/3gWxLsZKX+AdbSNrpHWqkLSLL45ch1UZZUMkd+OMez\nyMyPQoog7pANY+jsK76Y6P0guN7nWPcv7vHvwKMHoYiYt2PAmu2D2DudJ8xx\nxfOLxgAk/e/ClF+ilv+pyNproLEl0/gFloxZ8LhfZIg8O71OKNHYltSp8BIz\nM7JzlRtjFxjpLUPsGRx8HNyB/Ye4Fjy4qd+cxWptsKdtPjndtKq/lA77vSqp\nQIDr7IUHSG1EIyaX7uouVemQd3X0ZUlZ4zsnrmPQduPBFIds1g6owqhgSZED\nKf3ayUCT5USEVSY6hCwcYHV3EWkMerR/zVG7TtJ0AFWpp/HJyra6wlt4HmAa\nE3WmLy2WtfdMHqJyL9wOHiaf/l2OvzlefZjO+Hj1R0o0wbzb0TjZR4pXK7UX\nY2L+\r\n=2D/d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6MG5XygCvkKA+AtyBi66zFuNXAnyih6novwtZMz5y+QIhAMZnpYjh2MfocAOGf/SCFuN0OYgi3DCPZw1ksBV/cLuP"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta.9_1559361582623_0.43119057516281756"},"_hasShrinkwrap":false},"2.0.0-beta.10":{"name":"gsweet","version":"2.0.0-beta.10","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"48d0d2eed4e957b576b7fdf82e7792c415d087cd","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta.10","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RfQSQn7T1TuMHD9EiaEkhZv1PkWqFpNoydl/Uj3uWWz6PzQHStlVZHpv1jTIaVi2sPchpz6pCrL3ZesRATD1hQ==","shasum":"05ead7c476682edd9dd01add591ea082c76e05f7","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta.10.tgz","fileCount":78,"unpackedSize":1323734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8gxCCRA9TVsSAnZWagAAJsAQAJhwYrF1055ExJH7Ojrv\nelikisONbgqOQ7lAEW2OySqga728HZU6O3Vq2WN5X4HgOhHL5Iy9dkpcRbPC\nyRdnJ2NsMw/j3ufFBmx8Z+hBNG+HOcMxthZ1lNRh/+BCNiH5uLeiQWrcJ5BG\njiUF+MjS9MyjRhHvkllYSOhAtdRW6r0bePe56qr9HLMKzbbQ/2mCKBTLSleF\nsvlKGL8o33bQo6bhTxHjMkvFQ5kOjCgR0pP85NYVoUkHpMx9zjDe+EgKW7BK\namQS38AOJycrHo6DQx3AYu20ndsxWEyM6gip36fdLIskje20Otu/LwLmRJe8\nvyX5ZGHWYSO1W+AvTNSgmXATaIFjuIBBJH2SixcwgjjU4RV3VACh+htFVF4Q\n8+jeW+10RY8ya6RTRa5td8pp46xACXo7TZ+ApzRJGlbCQ7DvYn0agiUYD8+f\n8cn966Ypksv3ntX0Sli1hQbkzaAS+JIyIaI79I8vdrp1O97B25et8DG0yPKU\nkaug8h/GvW2+j7d+Q7NkQOs0/QXV0gPVbvyVHBnOREohyMaD+qqlhNd52RAp\nkIGk8qwAHFU4FOlrkrwcIkfcMmQJ8YJhRkUZHXZHIEkW8zyLMA+wNrCfhkml\ne70XkeWaGlMlwXhYvFFb1NtJDhm0rx4UhfwD6dhhcVFClx4rhDy5nqzCz5jA\n2IA9\r\n=JotT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGzbR03O+gSLcLBsqh+frlwRo4Z9MkfQCFcq6YELDB9wIhAL7O1Q4uzGcDFmIKTfoMozi1kZhw3Pz52ZqUKYBw30FM"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta.10_1559366721538_0.5625409006999997"},"_hasShrinkwrap":false},"2.0.0-beta.11":{"name":"gsweet","version":"2.0.0-beta.11","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --use_strict --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"704d12fb1d497fcd64b3d5d9ff574b5beaf63c8d","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta.11","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Qn6FOPC9/yrWdzo91VIQ2jgln2lFVr1J4tNpvfDrOO6Y8Q1QtJFyIKKXqezJzgt/D7UMVAbDThKZ6XnFBBw36g==","shasum":"7d77163cf2e3e0fc3794139fd12a5fb6098f1bcf","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta.11.tgz","fileCount":78,"unpackedSize":1323734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8xiOCRA9TVsSAnZWagAAxhoP/2V8JpI8Jsv4Zh69sJKk\n7+xCC5iTL59zuGHuewNpUtShyF9g7nl79OvAApxzjG3Dp+kPRFNsm/wUe4Re\njjVBEBR69uOGZMEEqPFMu7WQbMzcvjyx4g0D+8FjxwDQBRE0fT28uICaxIjh\ni1F9ECV2qzNL0c+/6PG6jO1OptwjlmibV7qQpHt7Xuf0s8sacuK4LAllVvcZ\nmn+ZbL7+kvuX2aBSXuQBM947ZRkt5U6mq7pW7vOEWpWXFDHGvnSn6ECtmIue\nKkuAjtIjm/mZRb1hKOzMghqxsF0FVBKzUXksdlEFLbWTw7LeJFjWU0eAJLEU\n7CZcBWk/TqvyIlON3p5EXx5cK4IIkf5oN0bnCtWmmouFopajLkFxh8PgvP6r\nJdI+NIXBC/oF3UvxfdgaZl8Lftn4eJTeUeCl7PW4Ze4feKDSwyt4DfzFA+3b\nWAuEv1UUMTf6IOMHZLNlv4darLbj/+4J3mVGMISyMghFqsHpyq40cs5e9DEY\nw/lHGg+CYk0nQG7gozQpTGWDlWOPAZbXHDTHERU6Z0+0hfRz3YodPeFN+sv2\nEjjswT0lO7O+53dEGwz3JXTpoa0Z8mjDq5I+rKbHg0JRgkDXTipfE5KnWOfm\nijHlieHrbyoGidRclHukDXbH78L+5RnDMHa3GcVyBamRD4lPtrfxjFACHdsm\n2Jky\r\n=tvv0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeX5SE9HCFRh0dObVGWkyMFLZAdj1b6qngrN1AkFak0AIgQkqSRd6w38oiAckLaoNU+RJOCkdfbEGUSVRFD4YM10c="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta.11_1559435405379_0.5070169289922495"},"_hasShrinkwrap":false},"2.0.0-beta.13":{"name":"gsweet","version":"2.0.0-beta.13","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"9dc052a0de5b21994903fd75928a0c73834b163f","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta.13","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Vc9YkLFaKFUFdYEIQB+78NBvy/3BTXWLM2ZlQnaslDrUaAd5ifZCMY6NdvurXVRkbo/AuEUj1xgRG9O3UodsIg==","shasum":"c2372e41706efc6d46e33b440052183d104dc7cc","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta.13.tgz","fileCount":79,"unpackedSize":1338727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9t3KCRA9TVsSAnZWagAAbmoP/3rWKaum38ap9s+OLqHH\nVCVEUglzPRRPR5s15FA+d3JmvuUhjkw26bX6UJ9sUBLwM6T5dEhfgs6LHpIW\nwRx/1kOr1pXaz8pAhH7MgrP0M42dUkN3OEjq9pkkWvZ2F9zWvOx7pLz515TD\nVHBDwJhYx4suJN7L+EHEr2m5rOTM4XBIG56JtbULJX5i6NbrjxKDRUdwIfo4\n83mxKco3BTf/sCwT1HfCAXLlOp71hNfIEB/2zKhtwIk572hCPpgECVyVREOc\n1G90RywZjjwSY2A3ZWMUd5LJnxNF9DFZ09Ttq8imXN5SBFJWPlFAPs389R+4\nbsoaplKgaPe8rie2y89YsnXbZwRQy7DVX4yR4DRbBsKbCLy84eCD2S5LO2KU\nhEM1p8iFRudx0YieDUFtA/08jukXAyPY8uMrCLyKDx9qG1q+Rzh1iuERyBo3\ng9fK5hPMnuerdmwWrY3sO9/xdAjE1TFjWaZfDgFhRScjcX1ZZ5btpETqAj4S\nwwOedD6YhiDZp5/rit/3UCJRzCHjEXJYtgvNJC8wkvhXXfIORBrFA7Ieh/UD\nsXKtkVVMUD/KSqmvm3GpgiylouwkLdSWvBYqfa5ljT8BiV7/6l+61RHXR1Va\n3eb+ttCa72WhyrGRNIUGqzq8PFYns7uGkRR+VK4+g0I7mdSNZwkM4EzM/T2d\nxrVU\r\n=GoLf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCHwefznw4tYWRwUC89hZGNwLqeKw1RmOj65dov69FjwIhAN/5LDkIOwWdUMi2MIjh8JTpuScIK6zfyrAEnpzwmAoL"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta.13_1559682505375_0.9855131531045427"},"_hasShrinkwrap":false},"2.0.0-beta.14":{"name":"gsweet","version":"2.0.0-beta.14","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"5a8b0a1c6e60cf4eef4225883d00ea15e929949e","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.0-beta.14","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-rwJQ7mi9QxWq0sReN0Yx0uq+0A5+QdfTo8WiBqRpmP0G9NeiWcA3WDf17oXNYLSDZ74hiiv9L/hDvtPrkYNDcQ==","shasum":"304a21da5a3dc6036018eb858f28a7189ea6d2e7","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.0-beta.14.tgz","fileCount":79,"unpackedSize":1339495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9ukqCRA9TVsSAnZWagAAuRkP/jkXtV+Dpx8PSSUREt02\nfR73yxPH6XxQpVR3/Vf3Ci/WdA7Rs72+z9od3eOhEAZncERLYMkldDRnAjS3\nhuuC+Wv9Of4Mc/QjJp/Spg1SmY7Av8oF9Fp2He9cpJUpnY+U3NG9wbzmFtMH\nK5mfibfn21Bsr7xYyFB5Z6W/To5AnhRE4Dgs0IHnvRK5HJ9GOukD9zMTvGfn\nQRzuSx2cWZwtlnEW5RAboiW3OaJMXnDXhhwBwc1tNz1AjOhqdUSDl3y8XnDR\n0byQnfLw3Ijsw9LXQXDq3GpWcQLxth78C39Xj99LSKymo9q/jHp0z95FqPSx\n5jdkT7NNLqpmVvlNivgWXYb81sP3dhD0MgyVELmLPVHaiB9v2s+k2yg1MBA5\nH8IwMrZmioBT8UtClamJchb11iMNupxQKrdDYIqUiQbPLPMaOgTAt5ob8CoG\nWpYxJEXkU53PRaj88msDT+utt1Q/WSfvea0A4amp1roiO15UzT1tsk+ReYeD\nkfJBj9cwCANou60LKXgZI3QnY223XE1M48npeePiC6HdNr22c15OZAR1vftC\nLasQgG4i+cDvv6uS2wOPTFGsWM5A5pRYUc/sxclTQ9hLmrcq2Ey/Mj+5+JDW\n78KWZ0z0fRFI8ut4QhL/CABMwh1lpaWeSHWzTBnU1G5qi6gtU9jzdCWU88hY\nokvS\r\n=vSZC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWQ8BtT7Ffm7GND7szyT3NyClpt0xIcqny+uZVNrWe3QIhAPlmK8Zl4K6x0mwZZBH/yadF2CcL9Tlm0v3V9R9FUZRR"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.0-beta.14_1559685418231_0.16559188536108338"},"_hasShrinkwrap":false},"2.0.1-beta.1":{"name":"gsweet","version":"2.0.1-beta.1","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"fb0ead1791b0c78fe195bc5e81684f086c23c53d","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-yWhdxk97AmPARv43is6OSlkEXamn4rAknLmZPTUGMecxJneKGWHS0qcMr9fTV0fwDex/KcIC2p5mywU0Yz7zgA==","shasum":"9ee1a34e9e3129c9d8c57dc5c8caad6281581516","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.1.tgz","fileCount":79,"unpackedSize":1339615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9wI/CRA9TVsSAnZWagAAktgP/0DkwPunIfuO46qRGHjK\nBtkYLQ6sbj+TYM7r5VrLdWoSW9bIuujc1SKIel5BRmu5UT6vCvn3zBQ9ZVDV\nrt11jykQ6oFNambiboFBilSGRa1X0R/bwhaKkPb94XQxAs8UusKMdfXpfLbL\nIcPGIeZsEwf7I3tikwbKzfSIglUHGzMo19qWFCtvGEskLXp3tdf46Y3Mf3pG\nzDcl/wV/iNks1Iv6BJmBZ0p1XhdvWvxPbdE/QIeWc81me6SsswCRetfqllh3\n6fu0/5Q5PvFfOfyGRBKoUcuPHsHDj5C42kixtBVB+NUnOMxyrMZ9GW63/GPQ\nh/JbFKEom5YfD+GkEH9JQYa/zF1GGngeVDAv1Se3CA4e2HMFqZB5NkJ6ZTIJ\nmujgauVNxzEsjaCnLtlmrtmvursUitUtfMMLRLMALHCuxOwXqGkU0zG3Kd1+\nQslwyfcwh/Y2vDmsdeFo6Dw46qPy/Y7kVeSPbJrv+JoG2x/VJAyRmUf/Emt6\nf0wDfMRGm/mtQPyBQUj3VnMGxoHdBKWfDZ29aWWua0bjRf37s6i//lCtEEwR\ndXrCCLq+iHT44QaRdfaEvPlCZ6Aef4oWr2ZKJioS0ZA+p3fTVjLl+dN/GA0T\nmL1EcDQxoA4btIGBYk+2jMw/cuOISPFuyLKI+5UTVH5ILkOZrACV9EkRf0OK\ndOKE\r\n=D5mG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9VjPAwUF7vCsZVPdpRTbphDso2S6Ur/UbpCqwgWGPRwIhAN0yyELRRLB0do7TDGa7eWXzDwQ3xQq9sRrw8BYEBkgC"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.1_1559691838794_0.8716713294289793"},"_hasShrinkwrap":false},"2.0.1-beta.3":{"name":"gsweet","version":"2.0.1-beta.3","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"f4d65cdf20419027ebe75f900fdc1b473e97ecc0","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.3","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-oNl1z6ZYTTPY/T5ZIA7tuP0QjjhXptMc6qXqZpUZ1xiWFo2T4NDq4L2gp1lJ5ClEJF7HXZ+OMutbn5tky+iGNg==","shasum":"8301eb27081e240dd65c8fb5b31376cbe5311318","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.3.tgz","fileCount":80,"unpackedSize":1343783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+FS1CRA9TVsSAnZWagAAVQ4QAIlETDLqqpwhvGk/Kwga\nQU84QWQIbtZHiE1Km2gz5T3ez8aW3/V90ykjljbmXeZ9m6DMwsvtzQQxw3Nd\nyFXgMUDeJzoiC62FdCdrVEbWRG2/pNpGiXLh920BpecVnI5v+Y8UacZ5hwf2\nwJ3JWX2tNdx2Zz8RyqSI6GgPFQGn10r2Z5lPTiSbUGm3XzNrgGaOnIzBbIGE\nBvYyWNRn2brQ5zyDhAUEnizYRtBVncanAdp1p/dNrwp6cB+tDQDfBXi8zwj+\nHkyzyG7Oa1MQMAC0vnT8gYmynAVCn6zn7sK4i5yXRbmHB0k6uxoWOJj+DOrI\n6gs2iu74NVNw+101QyBndXV8VinGXFF8suwAiNvWOxOZc5iJprxXcsHjK37r\nmNE1WQMuqEC5oU3XAVDXT0DtAEshgSLo05yypfSOkYDx0uwIAJgBaFX6Lb4S\nmV8ij2J1csWATeocl8+GTuWY09LsIGF9ZGkdBE1V6JOXR3s7FW/vSmkT/U6b\n3JmIZCv5woGrr9V87yyj/SpB9IafayFrbmZ5QWRk+0ekibQ3zkB78r7R5gCx\n9lFxXOtJraAgbClHP44fH84aI5MnixERFp4y4nTdUTawyXtv/0QpBKN2LGG6\nM3pb62UksvPkEIVt9WU4V93ZQmI2wkMnLSjIIIjuNkGiFysMkHghc/ExORSd\nvYpY\r\n=pJWz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKNubDcb2nqC0PHNW5WbxbVQFoJ2p5lTM0FP5owTv6sAIhALyv4grWK2+AwDjSfFe8rA/TtxLtZoEphGR7wxCexZRq"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.3_1559778484841_0.31324166563675493"},"_hasShrinkwrap":false},"2.0.1-beta.4":{"name":"gsweet","version":"2.0.1-beta.4","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"./gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"512938019b19db789b0116113445c065250ba967","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.4","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-y+htnQ2PQGY0s2HCXdt6KyIC1OxC5smMFpyMnGmBUDwgCgmrG9qU+3GfNf+i8bD0WxuYSUt8Ny14rVgh+xeEpQ==","shasum":"ad589107631cf180e2c3c47fac8801400e1ab5f7","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.4.tgz","fileCount":80,"unpackedSize":1345755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+YP5CRA9TVsSAnZWagAAN9wP/RVMHuJaTNBhZEAENIYx\nJmOFeFplHYJpTFojyzjS9WY5c23S7BAIY6Ot3kPFwnL0RRQK8dbDyNklBZzN\n7hsNjUMJdgS1/W9bN3vvkYGnmhNG4NLTxrMc/EqC8MJXXFP45k1cmDjSJhS4\nZT/GIe1hKct2eSKiueY6LpxVrndWiG23G2Aaj/zq7we4UY3+640A/l7to5Rr\n24WayQYXsnsGKNcG3DH2OeWx7wvVr2ff/QxznxuoMyFYr6sPgf+hGhllzKv6\nr98TYGDZvBgy21je9aQYWcN+irLKqNHwBxvg7UBex5g0nTqhhrKWq80l7VJ7\n3C4GbsrofBho5eZ0itLkcRkY6MZIQTt9qicod+zXBeSiskJeSjC7UCYp9NwE\ncbNtc0Z1/TDOKMwZuZxu9dm5zwUgd6gCjpJJ71GvWk1rJz4Tr1FLehobpa1L\nBUUZGDAvwKiDR9epLDip0WLygbuUR05w8YjnIZnlZYxBjyIBbLVnwiq46LTf\n0xAgZk8GfibX+Xj9yh3ap1BFHfDCrwWciFdGAd+zR5svQShzMTzDt373bKdB\nY6hdLgoswO/3csSxiIYNjep3WUhCY6rnly2ICtIPpI+sq607YkxA6yyD9AWJ\nF0Pb4Yntttnwnf76fIzWOF/o3ETttajEP14mva2TzgikOwADN/MxzyKp2DtX\n7dLM\r\n=Mcex\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZks9z+iW5FnIov1/JqUlpAzg0rfZsDGI8dutc1pE/UAIhALGgVElwKOWM5fzdfRoPhyMPW6tT6YnAqxNR/bAUX5u3"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.4_1559856120931_0.8645220168745542"},"_hasShrinkwrap":false},"2.0.1-beta.5":{"name":"gsweet","version":"2.0.1-beta.5","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict ./src/main.js","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"bc810019bd36868a3a4ed3a52f3021843234430e","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.5","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fxsyiuyYU3QKJCdd4IJZip0wf1j5oNMFa5qQY4+LvVoRrNH/+Ej8G3Q0uPnDbIQoUuZqnFT9bojbASKii1k6xA==","shasum":"785727cd09993f97aaf624c7538a80e3c98d3783","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.5.tgz","fileCount":80,"unpackedSize":1346900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+syhCRA9TVsSAnZWagAAju0P/0q0U+c00LHS0t5owZau\nyjGB0dNtdr6P8VEYafd0H0z4mZ3tid/tg4hame6bR88+xwx2obt3m4N1gy26\nrMsGWchGfpGysP6cgRXii5b2E4S9pTXJSMUxO4Jj+nrZxRLOLj5ZE9YMRlKv\nNfe9ypYW7SZfVfdRCl1ImS0/uzjU8x31KWcREujUjIChX9C83Q7DBKqAXFhK\nZ2JmFDgj+apdJmD8LKmACDJr+dVGFJpK9Us+EmCjcj45QvisgMUV2snPBaqc\nGK02I627bUdd0fQc4DyJITj7uuNNW8mOWs/zoIqvt+NkpmoOskgzt3KIb2kL\nIhSA1fuEhwJEmeMfvh6O2qGSaDJ6uV76DLfohG9lu7k5V1GNpmNZPcomlXko\nNUV9CZ/hHC4czvrPHU81Ovw1rsdigXeCKSYXQuNpE8W+4iqf6cV8zwnNZT/x\ncwXFKQRAsCfQw2hR39yelMDvZV44MbZ+l/XQ3b8Q6kR7C7UBa0OFYu0EyCjf\n1w/ugrobO8hwk+E0IhkFeaYnCvBDmkT6nligbVb+ubzQHPqDgbtPdj1SzjfR\nRB6nubrzgCMI2QaP452zP540VLy2nT7YzMFt3Vhagh1RMRtRTLt/5Ja6wnhr\n4YuhI5p5hmqMg/c62OVfN3rVbG/yZOVNK3QByxraV3neB+LbQIOeLNkV6eNK\nQkxS\r\n=b2/R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWps0uHA3sq+lDLZfmnWOQVCpAcsDoh/G1R7Fsae0RRwIhAOwsnn4Quv3ITt7IHg9GIhurjKoKxUxQvs8Lv7ctLjBi"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.5_1559940257265_0.7780808496042779"},"_hasShrinkwrap":false},"2.0.1-beta.6":{"name":"gsweet","version":"2.0.1-beta.6","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"a3eb5e782ccff2b93fa702da44b558655129aee8","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.6","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ejQBVDO06hs5ViWy5UNnl4hIi1mar0yZswm0xuxQ3omM4doClXOwl7PlJ/C5DfWwFa/+gzRD19lGYLSUyKcS+Q==","shasum":"e4979c4216ab9dd3c59ae661272377bd21f27c70","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.6.tgz","fileCount":80,"unpackedSize":1347322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/qZQCRA9TVsSAnZWagAA3zYP/ifvfdmG5DJqhW6Wt5yZ\nkagIB+bC653eae6e7SDKhkt7sZ2SxaU3qRQocSZ9wrp6EBHD4aXC+hLnbyTz\nOCzHaAOQEHXibPk1ROOteS9MFXmTJzoc8qAAELIChsKuVCo2ZokS7PMrbTCJ\nD9X3ay5L5KlxjjfF0JNpz4lXLoOcqv76Yuo9o+5hOpgs4N1R1bYRSqgXkG5e\njxDwn0frnzXGeduEMVTSa0OKd8VbBo9ifZmrkOrY1X8PLs55SG+lOkcDZXdP\ni19seKkEIs+T1q9VDp/8p81yKOd5Qeqw5zz4Hn0nRveFMMwtbvO7xZvs00Rx\n33IcoTyyFkFc/KlNufd3it0SezJPlPr/IOVqjNnpzbYP/sHT2qkvns8i/65D\nkKA4WG7xPN6AYqGQz+jPXmdrCxWkbj4RKUUN9iejOSp08kRUnwTPa4HdpK6q\n4EBkRNitxYZc1dJgYz1GtUampEhi1gvD1TY8Oxfxvaem/mEdMZ31gZddP3Ll\nxxuFa3Ux0WDJgysISUOihkws78FN2joNSUc2kMmP9eHrOzWK17peYYm4WcMg\nfMu79RkqUdglUzg1aErid0BJ61ZxY4MdfSqFcr92vNdUd2eW7/7k/t3fVoyR\nDC7zK2STjrDyYs9PYIsZhyduEkSvwWdIzQ725hhlmWoYcGt2TzbAdSYP2zon\nG/uT\r\n=wNWW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXYlT1+Hz7jJ0NSfOIM0fJYE3h9Xe4Z+jEgYaS2aenPAiBbdWor8JwzwkPNM1vKLdXwHJwXcUlA16a54dtExqDeLA=="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.6_1560192591757_0.32664402163606177"},"_hasShrinkwrap":false},"2.0.1-beta.7":{"name":"gsweet","version":"2.0.1-beta.7","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"0b1e56819e4804306d81c317e717000d37cf4a10","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.7","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-HTarUcWkbRLVLMJMBPyS0WJqVfm3gNGIm2KSHUY/X/sJ/uuV6nk5YkLsLeG+DW7QcQIG9aEKoIJEUDT8QmjrfQ==","shasum":"f0e4e91f740ba3feb8c4a1c4afa36ef8ede65818","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.7.tgz","fileCount":80,"unpackedSize":1347340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBlyeCRA9TVsSAnZWagAAtLgP/3tkmKYXUgQEB16BDaT3\nQfXBOyTYKpc7i0b9BnaGvY6BSQ3zPEKu54d1bCZ/b+OWQZCFUoCNFr4VIhSn\n6e/2B8Sgg0dPTOp09eFimfS3APijOZZ9lUpc7UrWsG6PYgQBxVCp6cqStlv3\nTx6Sj+Jlln2E4jQyaoZ78r+4bCKW7fs2thHxY98rSKCYinoDpFk63+0pD72+\nJGFeZs/qfIaZiYVUT7x5Wf/gv0Bpg3wHNux1BccwqhPOYbgsHEf+t6z6CG4H\nDiaCbRj9h/J8apvPAJAlQYeJdCF+qWlk2+GXLKOewQXcRGPp/Ysc8GXx/WMK\nY/zgkodSA6elPAU1ZD1rckA5SgXCdKHp9S+BCCjqmzZqnO/+/IBwSNTEijWa\n8Sg3Q6B4Ne59QfMzAGRiBPu0fqF8VRr/ae+9gupiPS5shpVsRqlVwCU/lVWH\nLMSxiN4a6oqYgk1BtdorxgevERAyHLebt1xCwMJR3e3q5WAhMoBd3lpy2EiH\nCC1iMHpJeSnGC0xY6lhYbGiikNeABciO26aqYocvyg8tMX4GDp2yvHbOBrxQ\nDH189Ad/yhTQ8u9x09HFBMtE2f1ZzEq2fxjB3F8ZgFJi7tis5AOuZo6la4eF\nfgw4iCAXaCqfatHCefkxCXr7vYvc6+5VLh/MdZ0/k6PXQ7CCar4XeU1uaYCs\n9hDT\r\n=0bdD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5LwQOhG0T2MVsRlI+59IFIqxeozdDRoZiWldSJZms4gIhANMVfPFMLt091YjgdGddcuy8YY9uTlQHMYjp/tIn2WGy"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.7_1560698014007_0.7013447839742233"},"_hasShrinkwrap":false},"2.0.1-beta.8":{"name":"gsweet","version":"2.0.1-beta.8","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"1a3351aae215601690c08722b0b985dcbd4453dc","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.8","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cv/e7Z/hlzMvSZKEwxEaSG4ivn2X6SUSbyPiHbG7qmJSUOa+nxFutcsrtDhJmPpvbhDyCOVEntDv2JWYSc6nYQ==","shasum":"8d9a5d4568620b09ba9142be1fd1cc8e10dcba65","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.8.tgz","fileCount":80,"unpackedSize":1347639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCCpdCRA9TVsSAnZWagAAb20QAJLgsy2sMx9VfOIiLijY\nbehBQ2AWJ6HELnMnCXzZeOUQYoaYH7nv6NKgxMpzYcg6X7aWHupbeP4d/Ddk\nVmb+IZKqEbFD8+XNT5aCweFkxq8kXf5uEXoCMhzGUU/PFIBmv88cWuxWKjL3\nAbfTtytrkBDKCh1NHVa9hxUz/ghIw31l8Lqg1Z1mNSLqUYLFawPVtrGdCwXy\nFml9vG8q1eFtrRPDhQzYoVyB0doCdodeKCaIE9aN+/utF6qFG5noru0XXMM0\n6AR/HtJEcMlaH7mo1OMmuf7rJ6hgaiII5l6lWffyNzDzrY2ylNCc4mGyVOC8\nZM8mFchI7SRXoSSYDekf23ebNuQxHQXuWiC+J8PLjU/4AsvMmASQS1cx+J8N\nr8wfMmzXTfYjnOM1iSGSAhdjJSqRmvusa01fJzs+DFuQOtELQNKTAdqhyySd\n/9ZGenvFiqgAXRC1Vs9dxYomLSiHqoIjUoAiG970vUDkrxd3I20aVXkWyx5W\nNHGJBMCGsiY+UNrcgEW/9YlRFgS1wta4Jei9dqCgcdRckl9D8zrnpea+fC1y\nDd+wTWlNwPZdLh85B4DslCZlG2RcXzLHV6R7LOORg9KSJOdH3xQhV7CvGdiR\nSfJ0oERXTxtryTbpMsLI4QQha3iQ2r7x7c/le8G/tyImKoiVRcRMhbgY9CEH\ng3EP\r\n=eb1n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDK+uOjc5wEAWzgNAGUQvFQlZdBdpMYHR8tjdXFWZp/iAiEA1SH4/cM8jFhNi/2lo18hIRZGdhw+QGFQIgeI4IobVMo="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.8_1560816221267_0.29947358967911697"},"_hasShrinkwrap":false},"2.0.1-beta.9":{"name":"gsweet","version":"2.0.1-beta.9","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"1fc0d0df49051130eb5d7b5ccdad1898250369c7","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.9","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fSSlAmFCIAvfmM1MSfe6O/KaNpEasNDYLj390aQUYsiDFHvGgJ8VyDfpVtXbFCBYVjEY34yRgLdqV/HJ4vAu9w==","shasum":"308ad672bb78039568269510b578b2fa2d6d6154","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.9.tgz","fileCount":80,"unpackedSize":1352421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCmfZCRA9TVsSAnZWagAANIcP/Rn1VZcrmE8qrFlOD2Je\nzmYxMw20CZdMbXQnlQ5qYPgSfmhYk2jkTo67x3gQgRTZ6NhoQa/FZSDugIuo\nk6nmJQkcFbBRNP52cGzGhqk1H0ENHizfI4+u5VIJ99KLkcbJXEURGAeuwu6a\n09bCWcbgQCFnt/fa8WvfiiRPzp6hHweLYAlMcQPPBsqKnuRG2AxdwYTuWra0\nExycQFbZHtdSg0JPnYH/FvXEBxNg/mfBjrY1pmBKkUPpC+5fgcR0Y6N1bOt+\nMadR8ldaIgor0dEbjvTcdmaEeQz6orJFywTt5mmIIWWsW/plDpmhZRP2yvqb\n/coSfJLZxTfU0i03+VMKcvhIq+KbaOckK+5rYh7gC+HWwwKBt86yb/Mz2FkB\nyqIDEkcNKZpysw8M7f1zWgeg03AL7/Tkl5wQzxba9rJd5X6oL3FNXIno/3rN\nHkVbzY+Vc/YrXc+A9VFxMMjlQHg77AKHrjr3uoEJ9XAc0WOe68GLu0qpe9au\nC1lj3aUn2FLLi/WUyc3JPy4UJp+tcttLEiFOzU50iAV7jI7wjXZE7zH49NpW\npAQquQ8q/+UQJYd7YbGlMCdLkwEizo7Ul6osPpNeqboRxJqcxS5txpX7VCqU\nZ0sMtj3PvJVliTSZay1nzZg+NSQfmeuSYJ/1l134JOU9089JQRtN58pA27+O\nloDk\r\n=KYpz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7c+xc/jCzJfnOtNw1Ur896wUAngp+XTzK0/fNCCUn0AiEAtaRvof1dOIHthVQbMbeb28k4d6r63Xi722D7XVJRCXw="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.9_1560963032744_0.7918390293082174"},"_hasShrinkwrap":false},"2.0.1-beta.10":{"name":"gsweet","version":"2.0.1-beta.10","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"6f3e7eb5697b8d670509fc1a27c11e1b52af3a12","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.10","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nyB8xpExZuj7Y2UoHsmIp0IWzVbl8z5aRWgCRoyHH5iBTVoQlOH1jrwH+zGle5foktV1HMFjXErQN0mm6MPr4w==","shasum":"95eb7af7418ef6cde7329a65d2fd63e3fb3f1f4f","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.10.tgz","fileCount":80,"unpackedSize":1352378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCrjsCRA9TVsSAnZWagAAKmAP/3P9pGG4gpl1TbdasKWj\nF/nHvs20yxRc/uonVhq07nXngpOC3oIOH1+qf9etA7/BrzNeHxUpNS4cldde\nHeL2kmzVKG5d2xJ0aWSiWVxL58VoU+L7G7qSAdcyolbwuhNH6498gXNemmND\nR+T2lyNRDtssTfroSEfrUIyWrpbdFhpEbVWIkoEuOF1b9xmiFsEbFlu7ZWwr\n5DbQ2q+73TcwkAsggUDFNjsz/kl2snTUaIjRt0psAi6s6bpLa2CCawMvDOMn\nAFBpn7ELdishZnb8VKUAM/qGL6R/PN6SEwUMio4Icsef5aryXICIwkcNuKM6\nk1st7bHnnypSzwD4HtznorT5iZUUGIIsy47Dv+S2eriMvYogqpMotJfy4cwW\nApx/IBz9iTqKO0EWFri3S6Z35/EHHVrj8q/7XTLtj02Ku9oSEQWXBW17Mkno\nhec6J4uS4DHHhu9Z/pqiFtv7UdBZyLiawr2TXblZX/hI8xaPFlHBK9Rs+9d6\nZ5ifUVicOwKGm0S7A7kxPuypSt/oLm9B+UboJq7ZPSgxb8HPsjW7BdQvu6wy\nqr5EsnZ3IIzVUJNL9jr9BMP6MRr0Vs6GardionvMLgbrA0aFtbt7wndlqZmZ\nl0A4nCdePaBgyRhCX3UaYBVxoS/NOsvyLvPqK3R/Q0sKT4P+9mVud1ROuizP\nFl/2\r\n=qCva\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdKgAWeAjP+T+thTEvfgRNbIQLLSEScnte1C9HK92a4AiEAwyVEvEmLz0PXVwMKYqJ7ahRy7A/ktl6LeP4cPDDUHV4="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.10_1560983787608_0.9523920040672247"},"_hasShrinkwrap":false},"2.0.1-beta.11":{"name":"gsweet","version":"2.0.1-beta.11","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.0.3","google-auth-library":"^3.1.0","googleapis":"^37.2.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.11.0","chai":"x.2.0","eslint":"x.15.1","eslint-watch":"^5.0.1","jsdoc":"^3.6.2","mocha":"^6.1.4","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"x.2.7","tsd-jsdoc":"^2.3.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"35ce76e6f2481d0b2413e387ce253e40626dfb62","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.11","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AeEsmCWCsTHdZA8n8ToOSi58+3D/n47gWFrWEbamoTTv81sVdm68sP/5hJXfkhqSr8X7hUS9v4Ytwcww65jqdg==","shasum":"e04f345171595410788d8a92a6e87dca30197359","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.11.tgz","fileCount":81,"unpackedSize":1355659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDAO9CRA9TVsSAnZWagAAJMQQAIQSFc1SZVUyy88tC6LD\nrCoCYZ65e42L7tlLBiOlPseyKuXmhpjY3jP7SJ4VKhx0iXBHiFpf4LziBHHy\n5aZ/Uajj6cW1MQyPcbBxiLyuQiXSiHtHvd3Nh9JbzbRpi7wzmxqGhUzqrlzc\nGqUGKEPeh0nAe1HwnXow91bhwWr8Qo/l6Y0eXkK8ZQIqXjx0WVaq/UN1Lk7v\nYyrhRaXhUnFZJYldmLQ9vcnpjW5smuXt3UAkLUlWw3TH8vqlzJcrjrdocnuJ\nbURgBioEJBfR/ZKwB1MPpuKT0kbmg0JevrI7nnCuHRhAJIx7kWRQPYuhQR82\npKLc9QxIIBiZZDSXHsbyUWDUP2xcAGDaRpy1/btVFGX8dUq3upPEGOVH2wiW\nl8Bsss7cmdzeupjbUjrNhyweGB9PFwppmgB+kCujMaH0xqAMeznY3Atm3RoZ\niN9Jw+1grNFCtrBeJYjAF6iU4HXXSNLZFrd0X2qDkEvvlbdcajz6heQC15mU\nZj8xIPM7y51zt2tY6alfoD2vfqTV7cHKiEijxQ/fSxSMZRuzyt1GMH6udUL0\nvjUa1qQLlxX2Nj/IbWfemsyFCzTlJDWoaAN7y1ZO2CTGZB6nRVJn3UbpdZ5p\nu3zaMaOAuLBIN54omppiBGdPVO6a6hS+JqHDU/dhAR8k1XZ5Hkrm5mYl7vCH\nVfnI\r\n=l1kM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEVTLC4qt9dK0QLGhjLm5M0s9zCbKsdLaBeEzPF8FfNzAiEAix2QS11wATIbOdJNNlcSiorUZHjXIzhwrL5nqCIrV6I="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.11_1561068476268_0.38038661927154016"},"_hasShrinkwrap":false},"2.0.1-beta.12":{"name":"gsweet","version":"2.0.1-beta.12","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^3.1.0","googleapis":"^38.0.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.13.18","chai":"x.2.0","eslint":"^6.1.0","eslint-watch":"^5.1.2","jsdoc":"^3.6.3","mocha":"^6.2.0","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"^7.3.2","tsd-jsdoc":"^2.3.1"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"ab6eb28b39bee2c670f15ee0e56fc9d0bb3c80c9","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.12","_nodeVersion":"10.15.3","_npmVersion":"6.10.1","dist":{"integrity":"sha512-86hZ0iM5RNXAvFhMe9oVVv2m2xqo4lD+71hAxOZxHE+qV02KjmvLHG+w9hamce2g+nfGxnT+W8tV7tr4dGGBlA==","shasum":"99e11d443f32fdc5380751b9fd9ca40dbe2dee68","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.12.tgz","fileCount":77,"unpackedSize":1344685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdO595CRA9TVsSAnZWagAAKlUP/0Nhly/3hC+/uCXhEA2Y\nTKCGF75ykpRSRXgdLE4aB5rq1mHdPvTXRSBCCBgHraNhc+iNMUtdy5klbDyw\nAJAZuZoQpIqqxLK/HcwJnco4W27kjiVP5Jz1x793HXzNW5/kFUKLXx1RccAH\nvnYDb+osPJtei6ZF/jONzQ7SlJG6z6kZ5bGrfa9JeVLeqD8TbOrTScGISsfS\nuxeYCAE4Ac366/eTNbLINnXp1OhgEdPzpxdW89ama2pEyEoQJpylxmMYasM/\nZm2eUNaknu5KT6Czyt7yjVB4SmV34y6HiaTQgxRpndmhOfRSvRvWR2NQp5oX\n94o0QCnd0P4VpGQnl56MlSg1Kl3jy+sP8go9Wpi+qio7sXEcIHl/3wLwgjfZ\ncr2q/VLjwT6fvkUTsyv01G6GuHV0yTn32l2BaGyz4mll1SXgSqqRsCzOEcFS\ngHZqlEzwJZHOYEg0ijnOKkWYoPtdlsqacwJN2fBuAt/4wt00i6JoRKbghw1d\nW+fmwP33vOA+lmv0tk4TRjKhm4odLZzyBEJGsv2yJC9v7HwEibUg2iLfXLiK\n41CCpZPLliugE1zaxQPU0LcWyTWZnzqX2L01Nn8OFztpjZm4rNcEFE2DmHaC\noVeasU3/UrWe+UghOdYXBpl6YmkE8bCgStnWI+O+P5Wurh7bMaCTPXqTCotv\ne+M2\r\n=hyIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjMaC/IsxRF+SUQxRPJLJswI5Q3HpV2wdTocLFTYxpkAiEAvmoYJM80Ni7xi61yPfP/p+iMxjhDeo0yPzGxh6nOoCY="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.12_1564188536105_0.893788893801565"},"_hasShrinkwrap":false},"2.0.1-beta.13":{"name":"gsweet","version":"2.0.1-beta.13","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^3.1.0","googleapis":"^39.0.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.13.18","chai":"x.2.0","eslint":"^6.1.0","eslint-watch":"^5.1.2","jsdoc":"^3.6.3","mocha":"^6.2.0","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"^7.3.2","tsd-jsdoc":"^2.3.1"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"ab6eb28b39bee2c670f15ee0e56fc9d0bb3c80c9","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.13","_nodeVersion":"10.15.3","_npmVersion":"6.10.1","dist":{"integrity":"sha512-wYBM8y00G4VZj8tqcqodXhAJPd4+kFTfozh7XhkiRYlfq1fgwcOpMcV71l/kSPgDpJ4MNk2LOGuATd0ILwL4cQ==","shasum":"ffde00afad7bb066359a49048dfaa13a666a1145","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.13.tgz","fileCount":77,"unpackedSize":1344685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdO6IMCRA9TVsSAnZWagAAWzwP/j2pSLI6vcUnKR7SnPB7\nmTL6g8c4EvahslxVFE2Dmo0NpEUj+RJmX2PYrHewDiFeyYJI0SgG7a7/5UK0\ng39hli1ORHv2bfACfTWJkwO6clo4aWasW3lwcKmn3uURrtvQHAW2Q0CE+yZb\ntOX7arAvFxcUPzIKrd60nDGF2SQ84hEnTBEG7lqrHW/djvRmKsKmKMFnVLy7\nATMrYUYsHoYQnRB0plRd6MgbTlgoeetjLb70rfqEgmKpRNnVc5eaSkDQ6CVw\nhWHDYmQ3/uR0Fq32TPcw86c3z2GMbv8ZRD8F8/Ve+b67kZTX0nGLSMUjy+Db\nvukH+m46QFyIZy/DhA+jSCAenWWnhdybHmqw2FCEM+jJ3fWqRW9rDWrOSPLs\nV/5+R/dfJTbz/ZaTReoHDlzajfQKa7FZO+sCSvuIU55f+wmF3qHGXiOpC5wI\nsKOY+JzIVLweJdj8YXo83mdml0S4XSUu2MnyxrGbBmHCTIachyEiXVzyIYZD\nV+36KhaY+y24c4qRL2503EJWXXC7Vn+wsSH6SIYuM+GDIzmcuTegNhY42xli\nSFTpnWY3N0KSihVnWcNpshL9WWvCpGqdVkg0imOoWudG2zxr1hrmwmD1DBL6\nkWqdE3/JYf0a69GkUrpyPZxwDxVxAr94xMkioxugy81+fKTZPAW09NHov6gq\neNxG\r\n=Eoq+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDS2cyFK8MO44Tv0/d/uivhzl4KYccUw5xVZOMuEXJh4gIhANo/qdMWqsmAfr9PxdmaX/K/EWNv5qT5VS1OxovPjl8l"}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.13_1564189196057_0.4713663796049654"},"_hasShrinkwrap":false},"2.0.1":{"name":"gsweet","version":"2.0.1","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^3.1.0","googleapis":"^39.0.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.13.18","chai":"x.2.0","eslint":"^6.1.0","eslint-watch":"^5.1.2","jsdoc":"^3.6.3","mocha":"^6.2.0","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"^7.3.2","tsd-jsdoc":"^2.3.1"},"gitHead":"0ed1be2c562f8232f568f34174dc0ef6aa6b1056","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1","_nodeVersion":"12.17.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4FS5+VR6NqKPXKuKqCj/eykfxhAvmmmKtblKgKiF+wsP0OaFHv6KaB297625ju8MrDWqeoz+Jk/AR6GgM/GhBQ==","shasum":"5c11b699cd2b3b5b81dc80d7197c957e66ab9592","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1.tgz","fileCount":77,"unpackedSize":1345558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGd9cCRA9TVsSAnZWagAAI5sP/1EYPI9nYLEHIZqePhFx\nEAJAStGNvcHfX14cqTIsmUEXR37dNI+nS8VSDmxPyVpXnzASTlQ47wZwqzEH\nllVvVg+eLmorhyM504GYL0co/b1GFW1MxMbt1ayMqZ9tJsFm7pF4br6l5ayW\ny8KWVaRQrOxvDw1JrueAlzW7btxviErnatpP2vQGa1pB8y4X1X7MLTZaDyHu\n2wSj4ZvW5eu7mNMev0HpPEYfFxHcuq3KHEGpzWR0avcgdmtKvSjH/lskZW2B\nq6kK61GtsRig2QBXxm0gwlUQjQ5gKhBk0MrXuX4uGAErs5MEW79mIND8a5gt\nsa/TOTuHzyw4NLh/Qgap1e2vOofXOIlhaBlRTfD+gM1AK39WF6k0WH4SCJfX\nhSJH8UqlBhb7kFbxGdgaa9clCC0jZgEwAotFzzVnHaLllbB1woB5P9JxzyX+\nrHexU37a4r4P1g49KooXy4Y3D+bMQIQ6s11WnLMi8Uxd/YaAaM5phCwfVj3M\nVid7jxfTchVSxG77Xb0qVHmgHwYoo38XrSR6HN81cIS/JJskyjhDF6UbMaUI\nYyEbDf+yB6Y0eap33mH7wejHx4bgbCBIdGI/pgeSrczae891w4KSw9ki5e+/\nxWNiVXDDpwGbwQlbDYfXba71+/Hm3QMHpoKe2bQnF8Z20iHTZY4z9bkRSdN4\npCHl\r\n=dkfi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXuAsRAIJwoARpkrhaKUI9pdFmJSW1Fi7MvY0Dpks1uAiAPP7wWLFC1cOSaLvI5Pr+nY2SwMvPlg+xlwvYC6tIAzg=="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1_1595531099945_0.43991978639192064"},"_hasShrinkwrap":false},"2.0.1-beta.14":{"name":"gsweet","version":"2.0.1-beta.14","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^3.1.0","googleapis":"^39.0.0","winston":"^3.2.1"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.36","@types/node":"^11.13.18","chai":"x.2.0","eslint":"^6.1.0","eslint-watch":"^5.1.2","jsdoc":"^3.6.3","mocha":"^6.2.0","npm-run-all":"x.1.5","nyc":"^14.1.1","sinon":"^7.3.2","tsd-jsdoc":"^2.3.1"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"516deeb14e04d78cbf2ba61917da90ed17998ed7","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.14","_nodeVersion":"12.17.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-183P0znSqCJHADF4mX0o+LeoUsZH4dC6lrGFyCi67qy1xkoF//k+5AGuWWTn2pVH2ETVQU+tD3lGZIQgtIiHdQ==","shasum":"5c231521094fd93f14767afa6e37980461c3cb55","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.14.tgz","fileCount":77,"unpackedSize":1345566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGeBJCRA9TVsSAnZWagAApsEQAJWMOi1kppxwNIRaFVm+\nK29h0R+LPrkKUTYDYKaZjQkWgHEbrokmcAWn7iv+tg/Df3WS2Y8aZrKqYINL\nFdr6OJQyfyO0IDXoaAtPVMeZLnZzzWSJJv2ofiemKHoTt7dAEpbChByE7RUA\nk36/Cioeies9raCGfLybqAZtDX/ZFo9kl/NY73oB/kJRTOpUjmebkell9F0B\nMF1zCpczNCz0Rqf8R2cLyKUCFwYy8bnJjUBqPYpsP9VMONJdoyi7pLK9v8lB\nk6WwbOX6ZJRkL9wVOKlKeykgt7VcioCP/6e9DrDRg+5YYJzvZSvay7xIpZpS\nxefn05zBHFG5rNhKy1vu//02+57vdYBPenEcGKNeA/nTGqC8txEGGmPgEEUz\nEfn52aZcRFN54FmhxkqYOLu9z0oQfhoKa8PWU7qJ/Btxby2ohWhucLH2hkUV\nL+yTUvmKQtt6ZWVL8xsFIopdpuKu2rlNlbOLWYzOTez28ujfOQsmEiLcS8+W\nd+2sFOe0f3Y8KRGvUFHPHxirK16CWVakv36RGDwMD/Ui2GOqeSyBbB/KSRpH\nvMhUXhBlCZvyrqukqZi1YDMcQLFFFM26ZYFvGnWHMDYjN4DHaWCleYk2erFN\n6cEuheF2Pit7u6O5SGzpZ5fhYrILs5PbLrdOXfGzfj8eVL5/n56XD3hJHd0S\nQILF\r\n=ii9e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHLlhqev6YBC36mYuBPVT4Ve1CjgpfO4i7v+9ak9O9o5AiEA7RRsNh46VJT+8mhDOWpBsMGTmrnmg5QDQMPshufycq4="}]},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.14_1595531336893_0.2866949696844001"},"_hasShrinkwrap":false},"2.0.1-beta.15":{"name":"gsweet","version":"2.0.1-beta.15","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.0.3","googleapis":"^68.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^14.14.37","chai":"4.3","eslint":"^7.23.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.6","mocha":"^8.3.2","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^10.0.0","tsd-jsdoc":"^2.5.0"},"gitHead":"d36dd0fedce4b2be23a9ada61eda785ecbaeb005","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.15","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-bYSAtTW7OOuyMgaQzg9bNsFLv0mSqOiR644/E/coun+ztsVXLzKezFKIaZeycoWODkq1BaEw+zSsOm/oze1Kfw==","shasum":"533335a622354476cf953742e70645e59df2515e","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.15.tgz","fileCount":83,"unpackedSize":1406936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZN1iCRA9TVsSAnZWagAA0ZgP/3lj/HNZHH44QQKTI7Mb\nqMjkxmfla8j6r2B3ogUXQuaJtWgTyFjNtyoHspRXlG3eIFHSgEKKvWaBh1SP\nPLuyp9/UKFZg3gYxGazfb1b84b5FnKRBd7ei7z5CU0xdYGfte2p1eUG/lguy\n4tMZ3F3vUkSJoVjYu4CRbMmH7chdsaJw3lE2VtBCjRBPQTqMY38iJ1GBOWFb\nWnZfKLTfzlvxLSu8P+etaaTxx1Khj6NwrElKCeXih2Kb/PgRpHxrrKpFYOag\ni3KTunUx7nkpDlSsDUFojHpcce9POcybpjL6e64bNOdy1PvmweVUI0vzurx6\n70jlD+xK3JrlQ59pUn3v9U/LOMxFffkCs7eLliYmJtR4nmszeVSoDUgaC/Ll\nB9KfSnFwUk7dWTXtm2Y6jFF4oZ+gBcSJay4AEWisVeKeeYgQqnvOn8Wmfu3C\nRlH+jg8HqfbSaHjqmFaYnCQq3VHywCfAlwiD+CZ84qTbplr/d9e4i2f/P21H\nX5iV4NCQyJgEZ4OujFYRT2muIagm9e0yXZZGt0eThnls6fqNzTu0XU6qCZAh\n/Lm3TJETV9uaTidFskRL9XIm2NmXsDgnyvhfm0OpJjAELhdBH3PgYYVsZJk9\nk0Q7DayxX7EWTprTcHoMZqZVz7oOpkXQp5ujPFg5sFcWo2VTPie065WEoFQ4\nb502\r\n=tGHi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcFKPKu+0XdWogDJvsvZ4G3Wi9nCTZp5nam4IT+n/rNAiEAvON0ePsVTl3lmNSCz43kVJ5IcU+3K/3Y0kbB3Xmay4g="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.15_1617223010044_0.916518034618681"},"_hasShrinkwrap":false},"2.0.1-beta.16":{"name":"gsweet","version":"2.0.1-beta.16","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.0.3","googleapis":"^68.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^14.14.37","chai":"4.3","eslint":"^7.23.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.6","mocha":"^8.3.2","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^10.0.0","tsd-jsdoc":"^2.5.0"},"gitHead":"cc14311e0f245ec9bf60a858d7056e0841cf1e75","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.16","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-AOX4b5X8u7HJA0eZ/xB18KIjmP3Bg7wiKqcm+icmMXlchR/9W1ikRUGVuUF3hcWeSHwz8VtoKnJC78qDBKl0Kw==","shasum":"66d4854446640f2a16a7d964744a75fb69828081","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.16.tgz","fileCount":83,"unpackedSize":1406942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZN6uCRA9TVsSAnZWagAAYnoP/0WrE7lrs6uLCrmlcC2n\nRm+m6QJh6U8ogpaTB8FiYA/LW0vbKsL8ozaO8sgzIVbKBHyUvK8CkX/jblS9\n2OxClePkY4OspnUEXFGEFgxsV3aSeVoOJ0wms2efHf0G6Q2xipATVkeWEajG\nfau6PEYyE0MIgATi+drSuAlqHtHTI/u5DXxrSEJim24JBoI/1z8qjVv0aZXq\nncZc2T1nZfwkEbHigm/BIz9fciquBeBsbn788VIyL2CO/35BNwpp3ojXcLj7\ne28JNwgcek+/+y69JlGu86vvkO33gT7kLxrWjytd2u4scwZ/rGm+BJkCGc8/\ntJONJa4amLAptBgvdfX62H7Ur2v6kFYozavDh3aIq0uPVCdATz6ATwrDK3Tw\nCe0dPFHkOF5HAHsejsDYtOncaaxUyvnMX72rtDVj1fZ4P3CWoyWthXbN0bKz\nQ3yro16W+FY/cJmzLWvXAWSWyIIHDTGUiAR26RH3vFZVKyyrTWSl2pacL36m\nKmVdzToG+u8/Gsh7ZGmg/hiMuf6jhlmQwX/pMn3M04JJTKBIuXmZi6egnrMe\n6qxjBzT9wcdzNHhT63B5FWygBou+CsEtBcleQGdX6FqIYV81+eFyssSCA9eE\n/rSAvebx9ZwuCv3mglAvGdE29H5ntCSoNyoZ65jFzEyDBQqmW4CBSkPvJ0Xp\nBLil\r\n=u/Q7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWmOi8RmCZgfzFF96n9kYrIM7UV1U/toTddR99/xqVDAIgG3MVvBWPGCy/4WRpP84g5i7IPyBEMnvXTwczpk1YgLw="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.16_1617223341842_0.7047407897912483"},"_hasShrinkwrap":false},"2.0.1-beta.17":{"name":"gsweet","version":"2.0.1-beta.17","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.0.3","googleapis":"^68.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^14.14.37","chai":"4.3","eslint":"^7.23.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.6","mocha":"^8.3.2","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^10.0.0","tsd-jsdoc":"^2.5.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"014f4b1d3e1d74051d87a6dd313fba7b8c2cb185","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.17","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-3xVm/VS3nnDYiWyT0pakwuCm2J3Ucq0sJnl6JgWAhE/DGVJWuwnnxNkZFxktSlNyF6liW07qkVEeLdM0G5O+sg==","shasum":"50305572b1e2acc23c965aa419a51bd3342f062b","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.17.tgz","fileCount":83,"unpackedSize":1406270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZOXkCRA9TVsSAnZWagAA+uQQAKGg2LYjvwWdB5i9M4QF\nlOrJ3vqVR4PAnPPxim3Pl2WDZIyONX2AQ5YXtNrNzXZWGkR2+fyVG45jLf/q\nVpBVGM8kzYgs8ayjaoi5QqEi2j8ObvCja2SZ0jc/RDn2PnGwK6+DE4L9iNab\nS9XqELHzdAc+EivyY2eLywMuRSTqzoROyJ8zLISp3fwITZoDQJXisZaLrZ/v\nZBcCojHO5T0LDXL3KmScRxltakP0WoTdWbpjmCxLCB0dGneZGjssypd9/6O7\nq7LGrGzbp5g4g6jQrxu/eXtU3coWEi/x1uYqMo3KgLUF9Y/TTXHoEeJBnHp6\nn8K6HTR8LBSVdKPqLtIZtfE481rTzXhHzSSgsmuwoJzszCN8bVjQSHdEzqHb\n4jjPSM+jTYsu8Qpo45Z37S97dCdYJ5+cmPhDMG7NKRVLx8+n5By62MrnH4Sm\n9r6afkz3vuI6Gvvarzt3OuFo+d5i6Fna/tZOwsH/9siLCQ5io7DXg58fwae9\nqsoTePxxt0EAoLRQ4gRBrD9ZQkcGOyq1yDzvqfFVj7JVoNqgRsrNixWvi/xj\n8InruafGdZX8DtkvBkkXc7s4570HFhn5KaDzdFXK9uTAKQNT4ljbUQbdgBkI\nDnVWw9LmBC5xyheUvCX7q7XSeG5lZa6RBPLpotQIDZ/vqDxc5FZYImwwg2LZ\n+Y7f\r\n=jH9x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlBoeRI2l40EmbUYM+qVnX1VNL/o0op02YMVhu3HSqmAiEAxrzqXQGY1pRu/ychZ+VCPX1D4PouExHvneGtU6HeOBg="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.17_1617225188301_0.7076143779342123"},"_hasShrinkwrap":false},"2.0.1-beta.18":{"name":"gsweet","version":"2.0.1-beta.18","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.0.3","googleapis":"^68.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^14.14.37","chai":"4.3","eslint":"^7.23.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^8.3.2","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^10.0.0","tsd-jsdoc":"^2.5.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"2653027f28f6689e6c2cc6ddb580e2d925eda6fc","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.18","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Z/jaruAHscKfCnAqoxQ7haR+3+7YM/e4ru4cF8wwRMFgr/j5ePQ3slqCNbiIj65BBaYcqeqY7FY9vGXQr+nZWw==","shasum":"78778302469d340cb2f9494b5a291e161eb07074","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.18.tgz","fileCount":81,"unpackedSize":1403885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtn9+CRA9TVsSAnZWagAABkkP/j0mr5cvUyOVYt3qa0hs\nww8pj3BM+bmpD1TFgBkRdZZt0moUNrcSHkZxf3oApyQtVApiukOB/Ahf7VUZ\nW7Un8NzJmgUulb9d3RDxbefXe+6x8dlKPcUQ/Pj/yeAjdEXgYFvEMz2SA9+i\nimDHgoEdv/BIgdNWyOVkHj1+9MyrdPrQZT6o20uHJU+YX6bV1FXJNqVt7FDy\nk2Exv/dn5fkZd6cQXKSGTff7GCHa5L1OyjrEv1Eim/LPlQhabZ1rS5wC+e5G\nMqCpdv2v1NwT9qCdI5zPzOKEipj5tkNt1IyIeXUMzrpvkVXGVp8D5+jNxAzs\nl/WRf3B8EsbKZQ0QKM21iKXUHns5+O+uZaSgmNaaj6SN70gHQ+O1DKHEVdbP\nhTQsWpO4rDFGh4dbQSujtjLiZpEa1foclqcePRplTsXPPVhn50hhffkThxXK\ne30lMbItDKuNMdArZqlwT25KV+JZfeplOrIs3/4iZjUX8Pq/S3qfEa8caXPM\necYZjQ5Au/pu24lNnlrPY+mVR+kyiW2W//5NCEcGI7R3FUfECVFWrsKU0wEe\nOct0NS4TFk/z8Q9uil6R6vhHxuOhT9gpHeTG4pQMH90Km/PR2AiD0ZoJ0dFw\niuoU5phlieen69FZxONIQ+29WG+BOC+eQqlbH/A6CI5smep2ASkRJmljIksO\nXNiN\r\n=0uN+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCajemFnZDjLbyBFNP90eUvl0/WBSprci0/W0XCUur6gAIhAMW0VajbCB8brnHTi5WsO3mA9ofE8/EneNl/nK7hls2S"}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.18_1622572926110_0.21287098025898055"},"_hasShrinkwrap":false},"2.0.1-beta.19":{"name":"gsweet","version":"2.0.1-beta.19","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.1.0","googleapis":"^74.2.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^15.6.1","chai":"4.3","eslint":"^7.27.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^8.4.0","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.1","tsd-jsdoc":"^2.5.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"f1c0e388383133a83d38da3de94d03cfa9601039","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.19","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-IyhS8hEiTbVVA+0wbQTFsGDdhGBtH7kg4Nf+WHd0sMO+orF2PsyhrhoVu90JSft+Dy2bGXmcOEEwMbeqZ9IUmQ==","shasum":"894486dc6521b5707f0d572d94fca543f03cf60b","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.19.tgz","fileCount":81,"unpackedSize":1403883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtpa7CRA9TVsSAnZWagAASYgP/0kbG/X79W4HmmQNc8h9\nB7BoIiaWiLRWZjr0S1zckxrwcQQm90n8iQERIaWet5ue3x3j7AsTYDjctsRj\nJRtn+U9W+GyluycCIzxSJ1QYMsyGfhqjIiFqR0W+5JPmxLdhQen02nwNrAda\nY7xGP73Ki+bTCXNo/2R77ZxQrMB335vce7x9JGPdyfKzRLQHkgdf+j0zdzfC\nLITCXTv+Trm5ke+W1eE1Pk51xz5cehfA+cQwRccfN99b88p+yGBkpB/GsiQn\nXBHXs5hY3jM1rw27fg3OldYmShvq50XD/ZzG3vF1GMBgk0kxMffm6/W50zgB\ng4+HPLYpRa7Ji0k0K7kMmPnX68IB88hexwJeo/Po7T1cq2JCTdIPtCzF0ACO\nvh0ZHK1xLMo69GJ55OOSjQt1K/jXJee7J0ZoWNjrJEFnJnFuCRhkEpSYAIuH\nw5uzvlA0uCzMQ8DMqjaEubCWdxrIvQOdFddQbpyFjejamgcO3AXY4kUq6dg7\nPPIW0qS9a5zSd/H/yZo4OpukHfaRHtTCSSBeXxVE2xhTbH6U5pHbI4t5llG1\nJXREX1EZowlyseuaWBUey7Ug/qFbePn7MiNYBya7ge4Og++U2yH3jLW2mYAJ\nLzberU9162CsDggbY3ea5k1bkcKSQNuPkvJ+uesOLeyaRuHPZmBrPhUpCa+w\nSUWX\r\n=WQ4q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZZg1d/YnwHb0mX3sfE929nlfZMRN7JhJLhZtv4k0VDAIhAOpLAP0GBciML6Iybn3Bm+TCieGnHjRJJ+TgHwnizVWI"}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.19_1622578875482_0.9044656839716629"},"_hasShrinkwrap":false},"2.0.1-beta.20":{"name":"gsweet","version":"2.0.1-beta.20","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.1.0","googleapis":"^74.2.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"0.0.39","@types/node":"^15.6.1","chai":"4.3","eslint":"^7.27.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^8.4.0","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.1","tsd-jsdoc":"^2.5.0"},"readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md","gitHead":"a5d23616f2ab08178529fd313e4e0b1b519dfe97","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.20","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-U461FdWCo6fYiAGLZnCMAa4OwBj+rIqJHP7gb5l5xuwm8QlHA0sIbVU8heRqoqaTkCmkic4AMtbgBBHD7vTKow==","shasum":"82d5a46051ed5b929da7adfe7db3a73d78f8c151","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.20.tgz","fileCount":81,"unpackedSize":1403883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvk7PCRA9TVsSAnZWagAA1KgQAIcIsX9aTn/BUYYMq76t\nCS0hNUOipxgMxeZV5aX0l0ns365c8Psf7okgNr2pDN32pbWSvTf1vl9H504k\nuXlSv5i5CXzysE7KXDYuz+KSZ1EPor4cGEZmEt+O0Eyil8rbLJzENFAVfS3t\n1gauSJikhShKkhMK3GmFFBPbXwkleKkYcD/BDf+SO6J9i+IkukkMS69SMUB/\nQMIDnhfWiQN3aU/YgzbqoiP039s7V3svLXgU0Q1jyLDZojScze9bQJtA0PX8\n154+Vuln4gP7V1IKDooD7MkXP8UA50CV+GmOiyWAfvrwRV+2wGOGXWe2v8ST\nb+o2vRmOIlxzH4fSvSiMlJ59GPQBNqSYQbSFKfBrCR8HY3CUgx75v8oUMpQs\n8zioJYhfkCVI/mMAStpY4hgZS2SBehJPoCLQdTuwqMme5eV3SGbgJmwlY0C9\ncqIfPmuJndVk82i4Ey8XKyTTvgKlwKZn1h3C5y7qdkczSFYy+LgVsqnADe7f\nvfmtUnSSmpBkjySKx9Rj/PznEQaLWXMbeOYuaoiBx3Skz/NJq/DR9GSHV2SL\nPnwOpFKm0VIW+q8drLrjb+2faW/g1BiDpfzzo8KwGQhza6obT3d3TyBodtdo\nlrdvlVcQsvX4LLISwRX6m7Usar/z1pmI6hZOqGfSIS+Sp9o0yVi5IPC4Le1K\nir4l\r\n=IiR5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDBGIqppmLvmnZCbCmV1MS7hAvChdwr5+XWk/tu0wZoAiEA9P22yfNt9FFtYHq60S70KcsmdZ/c2LN3LFiFpOZ6E7Q="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.20_1623084751328_0.46855727275004777"},"_hasShrinkwrap":false},"2.0.1-beta.22":{"name":"gsweet","version":"2.0.1-beta.22","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"preinstall":"npx npm-force-resolutions","test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0","npm-force-resolutions":"^0.0.10"},"gitHead":"117c685a3ccd621331f0d9ae38b97f9db132c46e","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.1-beta.22","_nodeVersion":"14.17.0","_npmVersion":"7.21.0","dist":{"integrity":"sha512-nkFm8RhFRfpxY8j4xpjHu322QL0+OiGgwqZlXBvQfpJuAGTYVfkyi+QFizCYH77myAoAqRsdC84lObU7VXlqdw==","shasum":"1cdc8a9710145bc58a7697f3194e182b9803b75b","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.1-beta.22.tgz","fileCount":83,"unpackedSize":1404563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMAvfCRA9TVsSAnZWagAA/D0P/0G+8zfdJU64CAmM7g0/\nrFfn8/PopTcVvhbyOonm/iCcpfKOfumg8qc0UfcsqB5hU4loCYwjqlQL0Sgg\nq3XoqUd76QH8UguRec93aCf3nTyJBkvez0nbCYe0+wc0n56bkMc9Ql5jIWMT\n8JUpjd/ucXsqYs+7oszSutJ3/+4qf6WkHlubHxM+7q75Th9IZHAVX1iyazBy\nwuomdzsX/pq1neUMqBxiQXWkP85y7UH8KaTNOgYprkfL3ng4eChCMnzgGSl+\nAQxSvzFEnJjAZpb6MvuIZBEbOO1usdmgfTvqWrBrrX7oXGRbw2XvH9RtHctI\nTYsrIID8sMPJs+sUy/D56fzP45bgE8bMyzYagBxiiNoG26sc6uWVY9DaMHBV\ntmFG4OV3w8CqoQK/JSKbQPU/FJ1QiExdPnHDquS7jo0oRl3C5XnZmd+wW29e\nunmF0NwbC51JAVqSmO/F3/J1HOcX+p8rlEK5eP9Dq3GA+Nz0pMlhPBqc7+pJ\n6c9OS0SWw2VuudvZv9xoKB4T6EReVVYO+Xy11OiZ9zqAslOiz2ggpm1ruvx5\nq6sYJ65JRt6eEI3BN9bHFRi2hyBY2MdkzpwC9jPSE4K1jnM8VrVqV/NC1yqb\nVzuMzrfcc8Z77V1PDCz+H7SUrn+s4oTBDItgbjt3DuDtE2BrdR6ywBgk6vdP\nSjh0\r\n=q/J4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtSa7TK7rmTiavbL/VxRsr7bp+21R8Rm5l8KhZhXkW+gIgEp86rJ2+7RrXg4pie7ulNkBIUsgvmvDLJNhJmxbQRjI="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.1-beta.22_1630538719643_0.08568478771287835"},"_hasShrinkwrap":false},"2.0.2":{"name":"gsweet","version":"2.0.2","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"preinstall":"npx npm-force-resolutions","test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0","npm-force-resolutions":"^0.0.10"},"gitHead":"c6dca7ea9598ce8628ad3022ac25ad0e121aa364","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.2","_nodeVersion":"14.17.0","_npmVersion":"7.21.0","dist":{"integrity":"sha512-wh6epVQtx2C+cqLV1LgVnJI+fcg2Mmjn0F4IArynH463DSbKs66cx2YLdmFvwsNo36UV+x+u9C441MGJrxGpIg==","shasum":"3f28d5026d8cb33616fc6089241f75d88ce4bd33","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.2.tgz","fileCount":83,"unpackedSize":1404555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMA0VCRA9TVsSAnZWagAAVa0QAJuPn71hSNDQi9nyROcS\n+vB0jVVmfmWwJoLSUSGKBzfEH/5Tc+axoBfggv4jiR7lqh6CdeReAfbmDOmR\ngB1FPKwCXFmyWXsJRK3Aki8t75dpmi1cq8zhzGzllppRDVENPASvy6qKW3ww\nuhTjvQ9RZELhMa64dtPvbqmhE06Pod7wOV8MbRawgDuADAfSlIGqj36KNhW+\nL2FFYPWmMD0A9bmvz5kOfcLQrTwqMKcATiQTx1bX+wrTWfXIFcHofCxe0YLo\nYNZtlukhEIX3TrPE3WFiDnDfhjPIe/AK/pOsxhGfb7HVJhB6vGl6cCXaGrGH\n4lS2o+kEO9KJGWA+6iOYeYHO2yZXSI2yVh5ZgdfmTxeG9T9G49QEbHHFXGHD\nUidDYwKsWq4N8ECwM9Se2LdDOk8m0AYqju163AxmOKnf9RgzofFixO9I/PLz\n8p09xhfqfE+vesoHKlv2HhwqFOwuaEyYAW+IWDcOl0j3iU3RH5PIcO3emUTo\nzPCv12pSGvXBakNEzfdthPKk2E57TRau1EEgyHrmg81hEbF12XcRAdjNFrn1\nylIbsIpxcUvY1+rybF/9r8i5iOYB3bJmISozLzzfUDA+wJHpvKW6w8r4DI2S\nQih5R9hoCumL9Lt8D8Q9Nxgy5ziR3BFV7roKWqoOJs616YFiA1QKgLxjJsOq\n7ajX\r\n=5bGE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnO9O/fWhrHCBNFjoOVOPvGwVaYi5WT/pVC1F7W8L2RAiEA4rDvPby5PrG4BjKvnj7kGs/E+xutDD/uOg1EeECcIHU="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.2_1630539028910_0.4253662229136126"},"_hasShrinkwrap":false},"2.0.3":{"name":"gsweet","version":"2.0.3","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0","npm-force-resolutions":"^0.0.10"},"gitHead":"499491e25aea25040d03510e1a26c9d7b36a8acd","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.3","_nodeVersion":"14.17.0","_npmVersion":"7.21.0","dist":{"integrity":"sha512-ORI7DpGIeVKqJU/i0BwydTIVfqFbthluEjTyo76bAFnbskRnmFQ8tMGLLtVbswXt7UtYyr2Hod0yND8lQlHVcA==","shasum":"f4f9b44446321f7e60e9ae55a6bfa681ba1f7861","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.3.tgz","fileCount":83,"unpackedSize":1404508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMA8RCRA9TVsSAnZWagAAAtUP/0zFfpyytaL0xulnvZfL\n3OLdYfHAlfKhq8U9lrG5oItA8y0lA5zbFZH24tP0IrLBh+9HGsZujjITIuwK\nQwYk72Gotgezb0rWFAuos9ep81dOnoGpdBkWzNa6b+3f7Tyz2P0sxEtAFtkP\n1FV4udcTtbVAYGzO+SsFOzzQFO/4pPasmKch0y45yT0sBTfRqX7fOzEMoL9s\np+WmkScCg3/HzoHUAc/awPZIBfalRQ5kZRkJS9Ow7XI1DiXE27sbHKYKeS9p\nasUq6Rp4FDpaRY2gjNcuZP8UwDNrT/aCGQ6lGJVhPrSi1sTCRU1hFIv78a7J\nW2NuRyN64+io8B3icoBF3h8by+RmnOZ7PKSdcPfM3FpsmjYmE5SYSkpqjm+R\ngWnRxibHko8TtMupJmlEuY7tBtF+6i9fBF786PGxBUngOku+ndHBD21evPR3\n1D7xZighqAVqmzimafJE/dpABPz6atVks2omKKT3ZNsz9H6Oyp1jvyIq4I0g\ngGRrRDBb368PaQ4Hm9mVdF6o23yKaRFPnJW+gebZWtA1d5cn1b+PyZCclkq8\nLKM8udXOz5IBMqB3hvEHCfdgx0xGYvqPA4KCwCXkPOwXeE4wCrVfHfKAfURi\nSq5Y5k0VOcdvAwzM2zkk5FVg7tD/Jyd7SL9WbzVjOys/wDshSgNppmnrsEoj\nv7g7\r\n=Mx4c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAiqdWAoFsixQ4L20G7dl+X2Ueds3uzrtCks2CW8/7U5AiApyxtP7kHgXanLCkLAg5tNtS5jnLwsg8uuOr/jtyfAEA=="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.3_1630539537329_0.0018899256383413388"},"_hasShrinkwrap":false},"2.0.4":{"name":"gsweet","version":"2.0.4","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.1","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0"},"gitHead":"706798e192a2b8b2e95192a001dc56bf1a4a3e44","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.4","_nodeVersion":"14.17.0","_npmVersion":"7.21.0","dist":{"integrity":"sha512-6OHTWHYWkTkURl1ZgFKkh4+eymyFtRpPtZwp3TQpej+MNe5+KzbbeqPg5GTU9fL3VsLmWXp3XEvNl4nRsx3DOQ==","shasum":"925589da76aa8509508d53d7d9ccc5c8364e1fe8","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.4.tgz","fileCount":83,"unpackedSize":1404468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMBCkCRA9TVsSAnZWagAAq/kP/046MUo0l+HiT5ZVLFk8\nrJqE18JZKXiFmVJVTgyRNjkIwrgwFewA7PO8TkKMnChiGvadH+YQ+4/gUP7I\nlKPoa26qUeGTWZHKEr8q1KsEurvtyrj5PAdwDJIzSLe9ZQvFnTu8nF34AR7Y\no7MIu9oAGfwkFyIBf6ud7cdeb2Fokf0p7FsLFpzrW4g7qn6Q4LDY4QhrSvhD\nRRxy68MQgjsVtzXyv//nlO9SEyuRoncHliH6U5FidGwU77Uvg9GX9vXLB+yt\nX95qUvx8CcPZEddVh7Ihv6KNsNuauiQmJwVzirg/Yx0C/talF+SpcIFOgjFj\n/UXRw/7DnIeWxmJ4RvRSwhxwVLUqxd5bgpl9Rfjjkw0AeBais+fkiqDgVVRf\nkjkls/zMtbvQXCxSxlyb5goGx1svcvkRW6Tdy4eDzbO/k/fM3N1JYIDoLEaa\ncs/Xw2VfhoaccXPGkM5odnjnBkvj6fNSSw6qVd2By1w44969KywlTMEXVRNt\ntOFG4bXW8RpQjC8Huzkk5ZA2DcYurg5lYtaWSQFIX+H76lZQNeAKOddN1Iny\nHKsGWZfoO7ILCRPbwsU9d1rf+Z26IEdrqjcrnfWYDpJZokUqPxss7VrGzfFV\nh49/9c6xHw4BKSEn4Ei++Nh6rL+647EVCgaxNDtkFdkaODQi1GVjGvogCuS5\nELe2\r\n=iQPH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbCJOht+BhMVvAv5IGKsgzd8X18wAtAlSui2hWhRf8sAIgRoqZHzhhoURlh6d3y4N3ZUq+C3MBJA527M3Cvdo8Ywk="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.4_1630539940276_0.3064410108047926"},"_hasShrinkwrap":false},"2.0.6":{"name":"gsweet","version":"2.0.6","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"GPL-3.0-or-later","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.3","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0"},"gitHead":"cb493091cd7c33751c7462c870da03861ea28cc9","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.6","_nodeVersion":"14.17.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-HEET71mdcgaY6TzXZZyIQCQCz41V649KpQm3ZTStiKcanRTdsBxNLLt5hHY8iBE+Df4F6Hey1PJMueaE2b1yDw==","shasum":"31f0147b380caff4bb2cf25260d6014d412b32cf","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.6.tgz","fileCount":83,"unpackedSize":1404469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJpPAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrppA//cWSSXrs7pqM6sLvJi1Uib1rduj3j0fU+NkfWDHdKQ3qP0IGN\r\nDq+IPm4OuDCezVD/5Kf8VEp32Zlxec1X1z17Cw7qTthi5Mi2RyefdVDzFrs+\r\nqbVyBH2gYKmGTt8aQ0Y2+PPFHSHrXufP8nYRgCj4xK+4ve4hAXM1bN6kuXFw\r\ncYHD4LjML1GZOOafLeqdoF3JwkDxlhiA+Ltuhhyfxn/CRUt1Y5ba22AZPLB2\r\nR06uJ49wSmFaZ0p5wTNwyyqrSWph8veJsFSebiaLNfS8bNiur/+ybvKzCF+7\r\n2LtWIF5ObIqF23JuBs3StOf3y7+vdkyGe403ip3OjgFi+FC3TelT2nzoePPY\r\nYOuyjElfHMeZ/L6jp9yFqupzl5Q/Eu3owE+ORajMBYGKQAKHC+2N9GzLufKP\r\nz69fdB1zbktmVSlUJGSefM2wD84lS+J4sO2lOU/40minVYfUzSA1w0FNyE6Q\r\nLhMUVYspXTm2ATCunBFniW/l8t8nVCvARhNh09vGNddVvJxNLJPMgQWTI57H\r\nHUhBurrdTUmftPqYdepW+u7Nu1RK+h2JPhkYkv3KLlWGNWLLlD9vGUy4Gw92\r\ngIdByZymLr/gUcsDYwzMs4FBs0XGTNyPjw8RzVi+DA2mnWurQJCPDtRQtt2U\r\nHEJ56kqu4LjLdJtkFngqplZeQWmKStRnwms=\r\n=w2Gh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5W2NdbvteEUnVD/DmFwGeDVs3hZSrv2jU6rJjN7Dd5AIhALqfkJ5DF8YAHYanFL7E7z20luBPxeC2hxYt+WTcpjqv"}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.6_1646695359525_0.6821790978723918"},"_hasShrinkwrap":false},"2.0.7":{"name":"gsweet","version":"2.0.7","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"MIT","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.3","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0"},"gitHead":"2dc2f7f570f87db95b8925c38cf37ac32789a278","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.7","_nodeVersion":"14.17.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-fjhdkZ4rjsWPW2GQPST6xls21JgpkEoNGGeQ/bIWXMn0KLa1DWwFaNnwxbGsguSPfnkwQRzcUWsifk4O4jzffA==","shasum":"66638b0d17994d7112ef81c42ed0ae129db618fe","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.7.tgz","fileCount":83,"unpackedSize":1370377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKNkVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorAA//a5iOgxJVIGwycVowW+6QFQLa/FenIUu6BlgqPwkAPJtEI8N7\r\nAg0FnguV31EvVxwSp4Zl0jw7hxkxnQfewrdobABvImrLbzMKMKI9plJQJv0B\r\nTr1UAmZReKPEOspqK7d5DVYYI5Q6vL5hJP8bQQCBcDxYXSsS9XHOUTDbuysV\r\nqPNmY+2FjFXDNddfdt9BrpLLqj/mbHW1pIybBcLgqNglwvWKyUOm9xFSIzFK\r\neo1WYbbg5VbWn8BAhv+M6lMoe2d4KRm2MxXRrvxbqS4DfeIIkRHJJiCLHSvQ\r\nwNLMD9ydnNeHVkBff/gcDtDGP3vYcMHB+D/e25YK3PxWbHOAyXZeZ8wG3tu1\r\ntnb+nd7nN3ILO+V5BiztVjG0OnZeGoMHLTqmnqjWsP+8gf55iWKq4oSVMRAy\r\nTMXNOY4XB6nLCh9GMe56H4Dq7U/Pg6+PwzYEr8mUxz1RO1ejSEgaLWOcQkzb\r\nhvjxrxu4U0iygLs+W5frSfJK2WeCAFDoJ2ONEOlLSWA28fpaMwFT2irUmXFT\r\n8krHp888OULQnn+6eEN5bc6Iq1Mpj63sht4RLRFgO7AV0mo4w04JTh+YWE6x\r\n8//stvxroT35WsNNJTPCVGM/TmTOxJWYAbIgL5Imz8X059q3MErYs/FKdiGX\r\n6ei1lt9JrWYbvwEiXS0yndn6OjurC6CaQHM=\r\n=37pg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqM79oFjPMhAUHnXfS4XZmz2Cu2p8i5cntcCrcS388UAIhANK26WeduZZIJqoLR4DH0GpOkwKiT/qeadJatpecOMpr"}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.7_1646844181735_0.4094732015452409"},"_hasShrinkwrap":false},"2.0.8":{"name":"gsweet","version":"2.0.8","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"MIT","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.4","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.3.3"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0"},"gitHead":"3210bbd458c7c6ec9647926cecd2129fe3092ce2","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.8","_nodeVersion":"14.17.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-owrvpmRG9mVMXDSyNC5+43aHurqAK7Hf4tfZ4ZsQ4HPqKBytCRo/qGFy4zcsmqCzh39oQlsdiQLs2JqexdwqDg==","shasum":"bafd15d843bf47d04f7245b81c1c8cb3714a443e","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.8.tgz","fileCount":83,"unpackedSize":1370377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKNlrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQSQ/6A/RKaDx1J6xB+5Rs9CbXZnZ8d26K9iedlqaRsof0zwWjAhFi\r\n6Untw2KebxJgNHmrLEttmWrPcqrrBSth/g28YiAYQ3PaixKI4LOVy/6SGKLA\r\n8p4fjq9FH83f/Pf2U3OTy4YTbLNgN7cbpoy2LmNtEl8eOWyhsdLciWHJ/L+2\r\nEKtpgDQLgoRVi/ces3fgVaIH4RwOlHRjb9HvxKfl3zSgcIeYroTuiF2vidHM\r\nIh5O2c18lphG3RkS8FJEna1g/ydNvcGr/seTBpKbsW+dhATPpwQek7I6Jz/i\r\nfaomMZbFNEthJQwaBnilBDVA8Cz/AJ8cfO+YgVbiejojIVwlsPmLz5q0GE6y\r\nLBM9I8jz9KmnT9pOv53CjhVaxL846RQGDeN2Q+nASHZ5Eeo358MbfQ9KuI1E\r\njGxDUuf1op3llcMzKyOIJYNan55pjtRutVSgnP43S4tQNik+u4K+xOIyvJuF\r\nF1Xx/h/oZOUNdhbyEYS34YDCdvrUaiw+8S1u/gqqYCzbEjdq2nl4qYZUf6h8\r\nvIWCCxE22KfSV3kQUBGQyIOC/U8n47s+FSUP6nxivqSu2xna6lLjDHSAylz9\r\nq/EtMD3zbWrN0zWDXUHIcojwaWRq84xLVlUxhmXgSTHf/v5mnKPV2AU1AoW2\r\nE2GsOHXNX2u6yys30oHVCP6jy5T0BWbCVts=\r\n=1OsC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGf/9/w9ao6JjAoj/3vmfLO5fN8VFtDVBKeYGfviuMDPAiAPbhcyjeEOIl3mVh8P65Z8U9lCrhy/kDx3dpbhHKGQMw=="}]},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.8_1646844267093_0.46807301166314885"},"_hasShrinkwrap":false},"2.0.9":{"name":"gsweet","version":"2.0.9","description":"Help with writing scripts to run against gSuite ","repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"main":"./src/main.js","types":"gsweet/index.d.ts","scripts":{"test":"mocha  --use_strict --reporter list  \"src/**/*.test.js\"","test:cov":"nyc mocha  --use_strict   \"src/**/*.test.js\"","test:int":"mocha --reporter list \"src/**/*.test.int.js\" ","test:all":"nyc run-p 'test -- --forbid-only'   'test:int -- --forbid-only'","start":"node --use_strict $npm_package_main","lint":"esw src --color","lint:watch":"npm run lint -- --watch","doc":"jsdoc -c ./jsdoc.config.json src/*.js src/**/*.js ./ReadMe.md","audit":"npm audit","build:commit":"git commit --all -m 'build commit'","build:ver":"npm version patch","build:pub":"npm publish","build":"npm-run-all --parallel doc lint test  --serial build:commit build:ver build:pub","build:only":"npm-run-all  --serial build:commit build:ver build:pub"},"author":{"name":"Tod Gentille"},"license":"MIT","resolutions":{"color-string":"1.6.0"},"dependencies":{"env-create":"^1.1.4","google-auth-library":"^7.8.0","googleapis":"^85.0.0","winston":"^3.7.2"},"keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"devDependencies":{"@types/gapi":"^0.0.41","@types/node":"^16.7.10","chai":"^4.3.4","eslint":"^7.32.0","eslint-watch":"^7.0.0","jsdoc":"^3.6.7","mocha":"^9.1.1","npm-run-all":"4.1","nyc":"^15.1.0","sinon":"^11.1.2","tsd-jsdoc":"^2.5.0"},"gitHead":"3fcd9278775abe60b7b7147ed7f11b9d865170f9","bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"homepage":"https://github.com/pluralsight/gsweet#readme","_id":"gsweet@2.0.9","_nodeVersion":"14.17.0","_npmVersion":"8.4.0","dist":{"integrity":"sha512-yhe0LAv8LtkJiWNf6+iII5jKnNetHqH8JEcvfLCsqPsXcwfn0mmlnxjCHa5JsBR9Vb6OoXw3I2O4lxLgCqw55Q==","shasum":"bdfebd25a0f168634b2aab050374298094313bb5","tarball":"https://registry.npmjs.org/gsweet/-/gsweet-2.0.9.tgz","fileCount":83,"unpackedSize":1370377,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/rxjtm31actrfR8wv9g2lmmo2dJR0einjMzHs/z6QSQIgDN/Y7iEZ+2RMuAoNWzise3FFElwFVWbONICU7LZ9Ipc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVLa4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDqA/+K+JsJ4R6ZApbGV+f4Jn7ksEKMmg1ArH6oH8/e8WtX/uEFHHK\r\n08nncAaeP8PM2cl9i7E+VEMhHBdeFjXy1XH0slJjeN9nW4seOczwmWlf0RB3\r\nt8++Yyi4wrEAXVBB1B50wc7D2WHbLY11d+oO1KoHvc8MZ327lvTKUcDOyGLl\r\nS2L0cMPMnxYgKZaSl7kCRTSOpxDNZeWk5typV/s3+D6e++j0B218izG7GY4z\r\nxWrVKi+mJh0ef1ekSs0x/EYM2tVRQSJtpijWx6jSQTo6xBKjbKjSo990WYsc\r\nyq+yyFngNuLkGyHk8ZabnmbnUIBvy5cv7xFTUYPb8hWNCZZx+gQ2XlGSLhh9\r\nQLdgzgxZTK3rFboMRdeg6A+3Grv+LwzOmBC6xLV7VRnHg43bPxUGyjOIczFp\r\nmPxtqjWW9TQGGBXlaSNTKmCDvnA146rPr99Qw+2esV7jMrL0cN92SeUKsKqb\r\nEuKsBV5p09h09ilF/lvNy13EonBOGr/k8YH/3i7QJwdSxysEL3DhMCO/pwmH\r\nEc4eiVhbipDvCZhk+ZYuzoBCi7lfa72IkShnuRvdn19sh2p9AtuLMo9mMZWl\r\nr4orpoQBzrtRG2g5N+lIub1stq9xpAExyXKi6C4eh2NfzugRRX7t7DBR5/lt\r\nFzwaY10GiRnM16OCXrRK6aI0ri3lQchJn0M=\r\n=G/s0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"rolias","email":"tod.gentille@gmail.com"},"directories":{},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gsweet_2.0.9_1649718968661_0.2859242061116194"},"_hasShrinkwrap":false}},"time":{"created":"2019-03-07T01:49:01.286Z","0.1.5":"2019-03-07T01:49:01.427Z","modified":"2022-05-04T08:55:41.514Z","0.1.6":"2019-03-07T06:31:10.133Z","1.0.0":"2019-03-07T18:13:17.454Z","1.0.1":"2019-03-08T03:48:51.145Z","1.0.2":"2019-03-08T06:13:03.241Z","1.0.3":"2019-03-08T06:27:00.559Z","1.0.4":"2019-03-08T06:34:18.031Z","1.0.5":"2019-03-08T07:21:46.134Z","1.0.6":"2019-03-08T23:56:23.573Z","1.0.7":"2019-03-09T00:36:34.016Z","1.0.8":"2019-03-10T05:56:25.041Z","1.0.9":"2019-03-10T05:58:21.783Z","1.1.0":"2019-03-13T03:12:03.701Z","1.1.1":"2019-03-13T03:45:22.433Z","1.1.3":"2019-03-20T01:24:19.440Z","1.1.4":"2019-03-21T21:42:50.514Z","1.1.5":"2019-03-21T21:47:45.550Z","1.1.6":"2019-03-25T21:38:30.930Z","2.0.0-beta-2":"2019-05-09T19:44:52.573Z","2.0.0-beta-3":"2019-05-09T19:59:23.626Z","2.0.0-beta-4":"2019-05-10T21:11:50.891Z","2.0.0-beta-5":"2019-05-12T06:35:24.579Z","2.0.0-beta.9":"2019-06-01T03:59:42.887Z","2.0.0-beta.10":"2019-06-01T05:25:21.729Z","2.0.0-beta.11":"2019-06-02T00:30:05.627Z","2.0.0-beta.13":"2019-06-04T21:08:25.572Z","2.0.0-beta.14":"2019-06-04T21:56:58.370Z","2.0.1-beta.1":"2019-06-04T23:43:58.994Z","2.0.1-beta.3":"2019-06-05T23:48:05.010Z","2.0.1-beta.4":"2019-06-06T21:22:01.164Z","2.0.1-beta.5":"2019-06-07T20:44:17.470Z","2.0.1-beta.6":"2019-06-10T18:49:51.938Z","2.0.1-beta.7":"2019-06-16T15:13:34.181Z","2.0.1-beta.8":"2019-06-18T00:03:41.387Z","2.0.1-beta.9":"2019-06-19T16:50:32.947Z","2.0.1-beta.10":"2019-06-19T22:36:27.789Z","2.0.1-beta.11":"2019-06-20T22:07:56.413Z","2.0.1-beta.12":"2019-07-27T00:48:56.384Z","2.0.1-beta.13":"2019-07-27T00:59:56.441Z","2.0.1":"2020-07-23T19:05:00.137Z","2.0.1-beta.14":"2020-07-23T19:08:57.102Z","2.0.1-beta.15":"2021-03-31T20:36:50.185Z","2.0.1-beta.16":"2021-03-31T20:42:22.021Z","2.0.1-beta.17":"2021-03-31T21:13:08.584Z","2.0.1-beta.18":"2021-06-01T18:42:06.478Z","2.0.1-beta.19":"2021-06-01T20:21:15.693Z","2.0.1-beta.20":"2021-06-07T16:52:31.728Z","2.0.1-beta.22":"2021-09-01T23:25:19.899Z","2.0.2":"2021-09-01T23:30:29.163Z","2.0.3":"2021-09-01T23:38:57.501Z","2.0.4":"2021-09-01T23:45:40.551Z","2.0.6":"2022-03-07T23:22:40.038Z","2.0.7":"2022-03-09T16:43:01.964Z","2.0.8":"2022-03-09T16:44:27.516Z","2.0.9":"2022-04-11T23:16:08.880Z"},"maintainers":[{"name":"rolias","email":"tod.gentille@gmail.com"},{"name":"jcullison","email":"jim.cullison@gmail.com"},{"name":"maxwellclemens","email":"clembot907@gmail.com"},{"name":"eburdett","email":"erika-burdett@pluralsight.com"}],"description":"Help with writing scripts to run against gSuite ","homepage":"https://github.com/pluralsight/gsweet#readme","keywords":["gsuite","gsweet","sheet api","doc api","drive api","drive","spreadsheet","sheet","api","gsuite helper","google office","google suite","google"],"repository":{"type":"git","url":"git://github.com/pluralsight/gsweet.git"},"author":{"name":"Tod Gentille"},"bugs":{"url":"https://github.com/pluralsight/gsweet/issues"},"license":"MIT","readme":"# gsweet\n\n## Summary\n\nA project for gathering the core methods and tools for making it easier to write scripts across all the products in the gSuite.\n\n## Installation\n\n`npm i gsweet --save`\n\n## Basic Use\n\nOnce you have your [authentication JSON file](#Authentication) set up in a file named `.env.json` you require the package and call the auth() function\n\n```javascript\nconst GSweet = require(\"gsweet\");\nconst gsweet = new Gsweet();\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nIn the above example the lack of a parameter to the new GSweet constructor is telling the package to look for `.env.json` at the root of the project. If your credentials file lives somewhere else you can just pass in a relative or absolute path like this\n\n```javascript\nconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps } = gsweet;\nconst { sheetOps } = gsweet;\n```\n\nThe second parameter supports using an environment variable that already contains the proper credential string. For example, if you're using Heroku and you have a config var named \"GSWEET\" the call would be\n\n```javascript\nconst gsweet = new GSweet({ pathOrVarName: \"GSWEET\", useExistingEnvVar: true });\n```\n\nThe code that runs loads the JSON file and parses the top level objects into environment variables needed by this package.\n\nA full example usage of the package might look like this\n\n```javascript\ncconst gsweet = new Gsweet({pathOrVarName:\"/Users/your-user-name/dev/ENV_VARS/gsweet.env.json\", useExistingEnvVar:false);\nconst { driveOps, sheetOps } = gsweet;\n\nconst main = async () => {\n  // Drive Examples\n  const TEST_FILE = \"<name of sheet in your drive>\";\n  const result = await driveOps.getFiles({\n    withName: TEST_FILE,\n    exactMatch: true\n  });\n  console.log(result);\n\n  // Sheet Examples\n  const sheetRange = {\n    id: \"<google id of a sheet in your drive>\",\n    range: \"Sheet1!A1\",\n    data: [[\"Test1\"], [\"Test2\"]]\n  };\n  const result2 = await sheetOps.setRangeData(sheetRange);\n  console.log(result2.config.data.values); // just showing the values passed in\n  console.log(\"Num Cells Updated:\", result2.data.updatedCells);\n};\nmain();\n```\n\n## Authentication\n\nIf you clone this repo it will not contain the needed authorization pieces. You will need to create a JSON file with the following structure:\n\n```JSON\n\"gsweet\":{\n   \"client_secrets\": {\n    },\n    \"drive_credentials\": {\n    },\n    \"sheet_credentials\": {\n    }\n  }\n}\n```\n\nIf you want to store all of this in an `.env` file you will need to turn it into a properly escaped string. A partial example looks like this. Note that all but the starting and ending quote marks need to be escaped. JSON wants double quotes so you can't substitute single quotes.\n\n```JSON\n\"gsweet\":\"{\\\"client_secrets\\\":{\\\"installed\\\":{\\\"client_id\\\"...\"\n```\n\nYou will need to fill in those objects with the expected json that Google requires. Google has a [quick-start](https://developers.google.com/sheets/api/quickstart/nodejs) on how to create all of these credentials. You can see a [full example](#Full-.json.env-example) of the JSOn file in the Reference section of this Readme.\n\n## Testing\n\nThis package contains both unit tests and integration tests. The integration tests are fragile since they require access to specific files and folders in google drive. The constants for these files are stored in the `test-data/integration.json`. Modify that document to contain the names and ids for your files. The expected structure of the test data is\ntest-folder\n\n```\n---node-test-subfolder\n  |---doc-in-subfolder\n  |---sheet-in-subfolder\n  node-test-sheet\n  node-test-doc\n```\n\nThe top of the integration test files also uses `create-env` to load credentials. You will need to change that path to point to your credentials json file.\n\nThis project is set up such that unit tests will be written with a `test.js` suffix and integration tests will end with `testi.js`. You can run unit tests with\n`npm test` -- the unit tests  \n`npm run test:int` -- the integration tests  \n`npm run test:all` -- both unit and integration tests\n\n## Reference on Using the Google Apis\n\nThis is information for anyone contributing to (rather than using) this project.\n\n[GoogleApis npm package](https://www.npmjs.com/package/googleapis)\n\nCheck out some [Drive Samples](https://github.com/googleapis/google-api-nodejs-client/tree/master/samples/drive).\n\nThe [Drive API](https://developers.google.com/drive/api/v3/folder)\n\n## Additional Documentation\n\nThis project uses JSDoc comments. If you want to generate the HTML documentation in an `/out` folder at the root of the project use:  \n`npm run doc`\n\n## Reference\n\n### Full .json.env example\n\n```JSON\n{\n  \"gsweet\":{\n    \"client_secrets\": {\n        \"installed\": {\n          \"client_id\": \"your id goes here\",\n          \"project_id\": \"your project id\",\n          \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n          \"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n          \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n          \"client_secret\": \"your client secret\",\n          \"redirect_uris\": [\n            \"urn:ietf:wg:oauth:2.0:oob\",\n            \"http://localhost\"\n          ]\n        }\n      },\n      \"drive_credentials\": {\n        \"access_token\": \"a really long token\",\n        \"refresh_token\": \"a shorter token\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      },\n      \"sheet_credentials\": {\n        \"access_token\": \"your token\",\n        \"refresh_token\": \"the refresh toeken\",\n        \"scope\": \"https://www.googleapis.com/auth/spreadsheets\",\n        \"token_type\": \"Bearer\",\n        \"expiry_date\": 123\n      }\n  }\n}\n```\n\n## Documentation on GitHub\n\nSee the [GitHub documentation](https://htmlpreview.github.io/?https://github.com/pluralsight/gsweet/blob/master/documentation/index.html) for the list of available modules, functions, function signatures, and usage examples.\n","readmeFilename":"Readme.md"}