フランシス・フクヤマのツイート

最近のグアテマラにおける一連の動きについてフランシス・フクヤマがツイート。「歴史の終わり」の内容を考えると彼の考えも随分変わったなぁと思う。

HerokuにデプロイしたRubyアプリからGoogle Sheetsにアクセスする方法

前回の続き。

今回は作成したRubyのプログラムをHerokuにデプロイして実行する。そうすることによってHeroku Schedulerを使って定期的にプログラムを実行出来る。

まずはHeroku用のGemFileを作成。

でここに書かれているgemをインストールする。

するとGemfile.lockが作成される。

git関連の作業を行う。

これで準備完了。

後は

で実行できる。

Heroku上で定期的に実行したい場合はSchedulerを用いる。

これはブラウザを用いても出来る。

コマンド欄には

と入力し頻度を選択。

色々と応用出来る筈。

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にデプロイして実行する方法を紹介する。

Kotz’i’jに恋して23: Twitterbotによる画像の投稿

TwitterbotのKotz’i’jはマヤの象形文字を中心とした画像も定期的に投稿する様にしている。現在は0~19までの数字と幾つかの象形文字をリストからランダムに選んで投稿しているけど、写真とかも加えていこうかな。

プログラムは何も難しいことは行う必要はない。

 

画像数が30以上あるため、ファイル名をリストとして別に保存してそれを読み込む形とした。これで大分コードがスッキリした。