LoginSignup
5

More than 5 years have passed since last update.

RubyでBoxのファイルを取得する

Last updated at Posted at 2018-05-20

Boxはストレージサービス。
BoxからAPIを用いてRubyでファイルを取得する。

Boxアプリを作る

非公開のBoxアプリを作る。

Box Developersにアクセスし、「アプリの新規作成」
a.png

種類は「カスタムアプリ」にしておく
b.png

認証方法はとりあえずオススメの「JWTを使用したOAuth 2.0(サーバー認証)」
c.png

アプリ名は適当で可(使われた事があるものはNGになる模様?)
d.png

成功です!
e.png

gemをインストールする

Box用のgemはBoxrという(公式)。
gem install boxrする。

トークンを取得する

Box Developersの以下の箇所からトークンをメモする。
使用中のアプリケーション>(作ったアプリ)>構成>Developerトークン
f.png

※書かれている通り、60分毎にトークンが無効になる。無かったらボタンを押して新しいトークンを生成する。

コードを書く

Excelを1ファイル取得するコードを書いてみる。

require "boxr"

# 先程メモしたトークンを貼り付ける
BOX_DEVELOPER_TOKEN = "hogetoken".freeze

client = Boxr::Client.new(BOX_DEVELOPER_TOKEN)

# フォルダのオブジェクトを取得
folder_obj = client.folder_from_path("/hoge/fuga")

# フォルダ内を検索する
results = client.search("abc", file_extensions: ["xls", "xlsx"], ancestor_folder_ids: [folder_obj.id], content_types: ["name"], type: "file")

# 検索結果をループする
results.each do |file|
  # 類似性のあるファイルがたくさん検索にかかるので、
  # 本当に対象のファイルなのかの判断は検索結果を見つつ調整する必要がある
  if file.name =~ /abc.xlsx?\z/
    open(file.name, "w") do |out|
      # ファイルをダウンロードする
      out.write(client.download_file(file))
    end
  end
end

これで対象のExcelファイルが取得できた。

リファレンス

公式のリファレンスBoxrのREADMEに用意されているが、1ページでひたすら長く、分かりやすいとも言えず、色々試してみないと分からない点もある。

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
5