[2016最新版]Google SheetsにRubyプログラムからアクセス・書き込みを行う手順

だんだんMicrosoftの陰が薄くなってきている昨今、Excelを使わない人も増えてきていると思います。特にエンジニア界隈ではGoogle Sheets(旧Google SpreadSheet)の使用率が増加傾向にあるのではないかと。(もしくは様々なツール・アプリの登場で、表計算ソフト自体が使われなくなってきてますかね。)

そんな時代だからこそ、プログラムからGoogle Sheetsにデータを自動記入して、毎日の定型作業を楽にしたいな♪という欲求も生まれるもの。ということで、RubyからGoogle DriveのOAuth認証を経由して、Google Sheetsに書き込みをする方法について書いていきたいと思います。

前準備:GoogleアカウントへのOAuth認証

Google Developers Console上で、Google Drive APIを有効にする

Google Developers Consoleに使用したいGoogleアカウントでログインします。初めてアクセスした場合は、Developers Console上に一つもプロジェクトが作られていないので、以下の画面が表示されます。

Google_Developers_console

この画面で、APIを利用するのボックスをクリックします。すると、以下のようなポップアップが表示されるので、好きな名前でプロジェクトを新規作成してください。

make_GDC_project

自動的に作成したプロジェクトのホーム画面(以下の画像の画面)に飛ばされると思いますので、プロジェクトの左メニューから、「APIと認証」-「API」を選び、右のメイン画面から「Drive API」を探してクリックしてください。

avarable-Drive-API-in-my-shop-manager

APIを有効にするボタンを押せば、Google Drive APIが利用できるようになります。

avarable-Drive_API_-_my-shop-manager

これでDrive APIの有効化が完了です!

複数のGoogleアカウントを所有していて、マルチアカウント(右上のメニューから使いたいGoogleアカウントを選択できる機能)を使用していると、自分の使いたいアカウントでGoogle Developer Consoleにログインできないことがあります。その場合は、Chromeなどのシークレットタブ機能を開いて、シークレットモードでDeveloper consoleを開くとうまくいきます!

認証情報の追加、OAuthクライアントIDの作成

続いて、OAuth認証で使用するクライアントIDを作成します。左メニューの「APIと認証」-「認証情報」を選択すると、認証情報が一つも作成されていない場合、以下の画像のようにAPI認証情報の新規作成を促されますので、「OAuth2.0クライアントID」作成を選択します。

client-id-01-my-shop-manager

下記画面が表示されたら、「同意画面を設定」をクリック。

22639997416_bb5a6a6e27_o

OAuth認証を行う際に表示される同意画面の作成を行いますが、以下のように「サービス名」のみ入力すればOKです。他の項目は必須項目でないので、必要ならあとから追加すればいいですね。

22666094175_073017eb5e_o

すると次にクライアントID作成画面が表示されますので、「その他」を選択します。これはMac上で走らせるスクリプトを使うので、他の項目でぴったり来る項目が無いからですね。もし、スマホアプリなど当てはまる項目があれば、それを選択してください。(ただ、この後の手順が変わるかもしれませんが・・・。^^;)

client-id-04-my-shop-manager

これでクライアントID作成が完了です。以下のように画面上にクライアントID一式が表示されますが、これらをコピペして使うわけではないので、特に文字の羅列の控えなどは不要です。

client-id-05-my-shop-manager

実際にアプリからGoogle Drive(Google sheets)にアクセスする際に使う、認証情報一式が記載されたjsonファイルをダウンロードするために、下矢印ボタンを押して下さい。

22043493054_27a3ddd380_o

これで認証情報の追加、クライアントIDの作成が完了です!

リフレッシュ・トークン(refresh token)を取得する

フー終わったと思っているあなた、まだまだGoogle Driveへの接続の壁は厚いですよ!ここから最も複雑な操作である、リフレッシュ・トークン(refresh token)の取得を行います。

先ほどの手順でダウンロードした、こんな感じのなが~い名前の名前のjsonファイル
client_secret_474352116113-52e....ui23u1.apps.googleusercontent.com.json
の中身を確認してください。

本当は上記の中身は改行されずに1行になっていますが、見やすいように改行とインデントを加えています。

この中から、client_idredirect_urisを取り出し、以下のURLの該当部分に当てはめて、そのURLに対してブラウザのURLバーからリクエストを行います。redirect_urisは2つあって迷いますが、urn:ietf:wg:oauth:2.0:oobのほうを使います。

そうするとブラウザ上で下図のように認証を求める画面が表示されますので、「許可」を選択

スクリーンショット 2016-01-14 21.48.05

そうすると、次の画面では、

スクリーンショット_2016-01-14_21_50_19

という感じで認証コードが表示されますので、忘れずにコピーします。あとは先程と同じようにjsonファイルからclient_idclient_secretの値をコピってきて、以下のコマンドをターミナルから実行します。

リフレッシュトークン取得に成功すると、以下のようなjson形式の返り値が得られます。この中のrefresh_tokenがリフレッシュトークンになります。(下記の返り値はそれっぽい文字列を当て込んだ偽物なので、使えません。安心して下さい、変えてますからm(_ _)m )

ちなみに、

や、

のエラーが返ってきた場合は、ブラウザにURLを打ち込んでコードを取得したところまでもどり、新規のコードを発行して再度curl実行してください。

これでようやく、Google SheetsにアクセスするRubyプログラムを作れる段階まできました。( ´ー`)フゥー

参考
Google DriveのスプレッドシートにRubyでアクセスする方法
Google drive : redirecturimismatch – Stack Overflow

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

あとは、上記で入手した各種認証情報を使って、スプレッドシートへのアクセスするテストスクリプトをRubyで書いていきます。

google-drive gemのインストール

Rubyからのアクセスにはgoogle_driveというその名もその通りのgemが必要ですので、以下のようなGemfileを作成して、

bundlerでGemをインストールします。

Rubyプログラムの作成

これで必要なものは一通りそろったので、以下のようにスプレッドシートの行と列を出力させるスクリプトを書いて下さい。以下のYOUR_XXXXというところには、これまで使ってきた各種キーをセットします。

ひとつ見慣れない「YOURSPREADSHEET_KEY」という所がありますが、ここには、GoogleスプレッドシートのURLの/d//edetで挟まれたランダム文字列を入力します。

がアクセスしたいスプレッドシートのURLならば、23assdkfa-AASDFASlkasfslasdf23kl-IN123kkdsjがスプレッドシートキーになります。

あとは、これを実行して、

という感じで行と列のカウント数が戻ってきたら完成です!これでGoogle Sheetsに書きほうだい!

“[2016最新版]Google SheetsにRubyプログラムからアクセス・書き込みを行う手順” への 3 件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です