15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsからスプレッドシートに出力する方法

Last updated at Posted at 2019-09-04

はじめに

この記事では、Railsからスプレッドシートに出力する方法をご紹介いたします!

前提:Railsの環境構築済み、Railsのテスト用プロジェクト作成済み、Googleアカウント取得済み

GoogleDriveAPI

Googleのアカウントは作成済みであることを前提に進めていきます。
まず、GoogleSpreadSheetに出力するために、GoogleDriveAPIを有効化する必要があります。有効化することによって、クライアントID・シークレットIDを取得できますので、そのIDをRailsに埋め込んでいく形になります。
この作業を行なっている方は飛ばしていただいて大丈夫です!

Google Cloud Platformへアクセス

URL:https://console.cloud.google.com
に使用するGoogleアカウントでログイン後、アクセスしてください。
すると、Googleのクラウドサービスがいくつか出てくると思います。ここはとりあえず無視して、左上にあるナビゲーションバーから、APIとサービスをクリックしてください。
google_cloud.png

そして、認証情報をクリックしてください!
まだプロジェクトを一度も作成したことがない場合はこうなります。
google_cloud02.png

次に作成をクリックしてください。
プロジェクト名を入力してください。ここでは、RailsProjectと入力します。
下記のようになれば問題ありません。
google_cloud03.png

次に認証情報を作成をクリックします。
そしたらOAuthクライアントIDをクリックしてください。
次に同意画面を設定をクリックしてください。
そしたら下記のような画面になると思います。
google_cloud04.png

ここではアプリケーション名を適宜入力してください。好きな名前で大丈夫です。後々このアプリケーション名が必要になったりはしないので。
アプリケーション名を入力したら、下にスクロールして、保存をクリックしてください。

そして、アプリケーションの種類をウェブアプリケーションに設定して、作成ボタンをクリックしてください。
google_cloud05.png

そしたら一定時間ローディングされると思います。
それが終わると、クライアントIDとシークレットIDが表示されると思います。
この2つのIDはRailsで使用するものになりますので、どこかに取っておいてください。

長かったですが、以上がGoogleDriveAPIを使用するためのIDを取得する手順でした!
まだ続きます。。
ここからが本番ですね。。。

設定ファイルの作成

先ほど取得したIDをRailsに伝えてあげます。そのためにconfig.jsonファイルを作成します。作成する場所はRailsアプリケーション直下で大丈夫です。Atomというエディタで作った場合このようになります。
atom_config_json.png

そして、config.jsonファイルを下記のように書き込みます。

{
  "client_id": "クライアントID",
  "client_secret": "シークレットID"
}

Gemfileに追加

Gemfileにgoogle-drive-rubyというgemを追加します。

gem 'google_drive'

bundle installコマンドを忘れずに行なってください!

スプレッドシートを取得して出力する

APIを記述する場所はコントローラーでもモデルでも呼び出せれば問題ありません。
ここでは、homeコントローラ、topアクションを作成してあるとしてご説明いたします。

この記事と同じようにするには、rails g controller home topというコマンドを打ち、routes.rbroot home#topとすると良いと思います。

本題のスプレッドシートを取得して出力する処理は下記になります。

# GoogleDriveのセッションを取得する
@session = GoogleDrive::Session.from_config("config.json")
# 書き込むシートを指定する
@sheets = @session.spreadsheet_by_key("*****************").worksheet_by_title("シート名")
# スプレッドシートへの書き込み
@sheets[1, 1] = "Hello World"
# シートの保存
@sheets.save

これでスプレッドシートに出力されると思います。
spreadsheet_by_keyで指定する文字列は、スプレッドシートを開いたときのURLに含まれる文字列になります。URLはhttps://docs.google.com/spreadsheets/d/・・・となっており、・・・の部分にランダムっぽい文字列がありますので、それをコピーして、keyと指定すれば大丈夫です。

またシート名はスプレッドシートの下の方にあるシート名を適宜変更してもらいます。初期設定のままの人はシート1と書けば大丈夫かと思います。

最後に、@sheets[1, 1]は最初の1が行、次の1が列になります。
ですので、@sheets[2, 1]と指定したら2行目の1列目(A列)にHello Worldが出力されると思います!

終わりに

以上が『Railsからスプレッドシートに出力する方法』でした!
記事に画像をちょくちょく入れてみました。

APIを使いこなせるようになると、できることがさらに増えますし、ドキュメントを読む必要になってきますので、技術の幅も広がると思います^^
ぜひ挑戦してみてください!

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?