RubyアプリからGoogle Sheetsにアクセスする方法

以前、HerokuにデプロイしたRubyによるTwitterbot, Kotz’i’jでツイートへの返信を行う際に以前に読み込まれたツイートを除くため、最新のツイートIDを保存することとしたけどHeroku上のファイルはこの方法では更新されないことが判明。

代替策としてGoogle SheetsのシートにIDを保存し、毎回読み込みと更新することとした。

でその方法。

まずはGoogle APIsにアクセスし、

Sheets APIを選択。

利用規約に同意する。

プロジェクトの作成を促されるので従う。

プロジェクト名を決めて作成ボタンを押す。

APIを有効にする。

続いて認証情報を作成する。

色々選択肢があるけど、HerokuにデプロイしたアプリからAPIを呼び出す場合はその他のUIを選ぶと上手くいく筈。それからユーザーデータにアクセスするを選択。

OAuth2.0のクライアントIDを作成。

認証情報追加画面でメールアドレスを指定する。

下記の画面が現れるのでJSONをダウンロードし完了ボタンを押す。

このJSONはHerokuにデプロイするアプリがあるディレクトリに保存する。

Google SheetsのシートにアクセスするRubyでプログラムを作成することとなるけど、その前にアクセス用のGoogle Sheetsファイルを作成しておく。

また、テスト用に任意のセルに値を入れておく。

ファイルを作成したらそれを選択し、共有リンクを取得。

共有リンクのd/と/edit?の間の値がキーとなるので保存しておく。

google_driveのgemをインストール。

ここでバージョン指定しているのはTwitterbotとの関係でFaradayが問題を起こしてしまうから。

プログラムをこんな感じで書く。

初めて実行した時は下記のメッセージが現れるので指示に従う。

表示されたアドレスにアクセスすると許可を求められるので承認する。

許可すると認証コードが表示されるのでそれをコピペする。

これでシートへのアクセスが出来るはず。

次に先程セルに書き込んだ値を編集してみる。

これを実行すると:

Rubyからシートを編集出来た。

長くなったので今回はここまで。次回はこれをHerokuにデプロイして実行する方法を紹介する。

Leave a Reply

Your email address will not be published. Required fields are marked *