家計簿のデータをNode.jsでスプレッドシート連携してみた

Advent Calendar 2021

この記事はレコチョク Advent Calendar 2021の11日目の記事となります。

はじめに

はじめまして、最近サウナにどハマりしている酒見です。
サ活こそ正義ですね。
私も音楽が好きで有名どころしか知らないかもですが、学生時代からいろんな名曲や
アーティストの音楽と共に過ごしてきました。
BUMP OF CHICKEN / ELLEGARDEN / ONE OK ROCK / UVERworldあたりが大好きで、泣かされたり背中を押されたりテンションを上げてもらったりと、思い入れが特に強いです。(世代がわかってしまうかもですね)

そんな私は、普段はサーバサイドエンジニアとしてPHPを触る機会が多いんですが
今回はNode.jsを使用して、Google スプレッドシートへのデータ連携を作ったことを書きたいと思います。

前提として

私はスプレッドシートを家計簿代わりに使っています。
PCから入力する分には気にならなかったのですが、スマホからの入力がし辛かったので、
アプリで作ってしまおうと思い、元々使用していたスプレッドシートをDBとして
使いたかったところがあります。
ぶっちゃけFirebase Cloud Firestore使うほうが楽でした

アプリ側の実装やスプレッドシートのAPI環境準備などは今回は割愛します。

アプリ構成

簡単に構成を紹介します。

アプリ

  • Flutter( version.2.5.2)

サーバサイド

  • Node.js( version.14 )
    • firebase-functions(実行環境はFirebase Functionsを使用しています。)
    • google-spreadsheet

今回はJavaScriptで記述します。

データベース

  • スプレッドシート

Node.jsのプロジェクト作成

環境の構築を始めます。まずはディレクトリの作成からです。
$ mkdir sheet-expenses-app$ cd sheet-expenses-app

次にNode.jsのアプリケーションを作成します。
$ npm init

パッケージ名やいろいろ聞かれますが、全てYESマンで回答しました 。(ここはお好みです)
以下のpackage.jsonが作成されました。

次にFirebase Functionsを使用できるようにします。
今回はJavaScriptでいきます。

これで環境自体はできました。
テンションを上げたいので、一回Hello,Worldで疎通確認してみます。

  • index.js

/helloWorldにアクセスしたら Hello , World!と返すだけの簡単なメソッドを作りました。
ローカル環境を起動して確認します。

image-20211122110740696.png

うん、いいっすね(ニッコリ)

スプレッドシートへの連携

ではスプレッドシートへの書き込みを作っていきます。
ライブラリを入れておきます。

またGCP側でGoogle Sheets APIを有効化しておき、サービスアカウント・認証キーの準備をしておきます。
ここまでで環境の準備は完了しました。
コードを書いていきます。

  • index.js

書き込み用の配列にも入れていますが、文字列形式であればスプレッドシートの関数を入れることも可能です。
動作させてみました。

image-20211122115424530.png
いいですね、入ってます。

では直書きしている箇所を動的に変更するように変更します。
* index.js

作ったメソッドをデプロイしていきます。

Deploy complete! と表示されればOKです。

ではアプリの方からbodyに以下のようなパラメータを設定して
デプロイしたAPIを実行します。

アプリ上はこんな感じです。
image-20211122115204151.png

スプレッドシートを確認します。

image-20211122110941982.png

うん、アプリで投げたデータが入ってますね。
よし完成!

まとめ

今回はNode.jsからスプレッドシートへ書き込みの処理を作りました。
スプレッドシートは業務でも個人的にも使う機会が多いので、もっと有効活用できればなぁと思いました。
update/deleteも作ってたんですが、長くなるので今回はこれで終わりとします。
お読みいただきありがとうございました。

明日のレコチョク Advent Calendar 2021は12日目「スライダーって簡単に作れるの知らなかった」です。お楽しみに〜〜。

この記事を書いた人

酒見宙志