以前、HerokuにデプロイしたRubyによるTwitterbot, Kotz’i’jでツイートへの返信を行う際に以前に読み込まれたツイートを除くため、最新のツイートIDを保存することとしたけどHeroku上のファイルはこの方法では更新されないことが判明。
代替策としてGoogle SheetsのシートにIDを保存し、毎回読み込みと更新することとした。
でその方法。
まずはGoogle APIsにアクセスし、
利用規約に同意する。
色々選択肢があるけど、HerokuにデプロイしたアプリからAPIを呼び出す場合はその他のUIを選ぶと上手くいく筈。それからユーザーデータにアクセスするを選択。
下記の画面が現れるのでJSONをダウンロードし完了ボタンを押す。
このJSONはHerokuにデプロイするアプリがあるディレクトリに保存する。
Google SheetsのシートにアクセスするRubyでプログラムを作成することとなるけど、その前にアクセス用のGoogle Sheetsファイルを作成しておく。
また、テスト用に任意のセルに値を入れておく。
ファイルを作成したらそれを選択し、共有リンクを取得。
共有リンクのd/と/edit?の間の値がキーとなるので保存しておく。
google_driveのgemをインストール。
1 |
gem install google_drive -v "2.1.5" |
ここでバージョン指定しているのはTwitterbotとの関係でFaradayが問題を起こしてしまうから。
プログラムをこんな感じで書く。
1 2 3 4 5 6 7 8 9 |
require 'rubygems' gem 'google_drive', '2.1.5' require "google_drive" #Google Drive session = GoogleDrive::Session.from_config("client_secret.json") sheet = session.spreadsheet_by_key("KEY").worksheets[0] value = sheet[1,1] p "the value is: " + value |
初めて実行した時は下記のメッセージが現れるので指示に従う。
表示されたアドレスにアクセスすると許可を求められるので承認する。
これでシートへのアクセスが出来るはず。
1 2 |
sheet[1, 1] = "word" sheet.save |
これを実行すると:
長くなったので今回はここまで。次回はこれをHerokuにデプロイして実行する方法を紹介する。