Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@eielh

ElixirでGoogle APIを使う

ElixirからGoogle APIを使った。
ライブラリがSwaggerをつかってコード生成されてることもあってか使い方が初見殺しなのでメモ残しておく。

具体的なほうがわかりやすいので、Spreadsheetを例にする。

SpreadsheetのAPIを使いたい場合はgoogle_api_sheetsを使うことになる。APIごとにgoogle_api_xxxが存在します。

ドキュメントは下記URLで閲覧することができるが、初見はどこからみればいいのか大変わかりづらいです。
https://hexdocs.pm/google_api_sheets/api-reference.html

まず先に、Google Sheetsの開発者ドキュメントを眺めたほうが良いです。
IDの確認方法や必要な概念の説明どが書かれているのでサラッと確認しておくほうが良いです。

APIの一覧が確認したいならこちら。

このAPIと対応するものが、APIモジュール内で提供されている。
Sheetsの場合はGoogleApi.Sheets.V4.Api.Spreadsheetsとなる。

Spreadsheetで最初によくつかいたくなるのは読み込みだと思う。
読み込みはspreadsheets.values.getを用いる。

対応する関数は sheets_spreadsheets_values_get/4になる。
https://hexdocs.pm/google_api_sheets/GoogleApi.Sheets.V4.Api.Spreadsheets.html#sheets_spreadsheets_values_get/4

第一引数のConnectionはGoogleApi.Sheets.V4.Connectionである。API毎にあります。
https://hexdocs.pm/google_api_sheets/GoogleApi.Sheets.V4.Connection.html#content

作成方法は、new/0new/1を使って作ります。

new/1の引数tokenはGothを用いて生成することになります。
Gothの詳細は省く。

elixir-google-apiの情報も役に立つと思います。
https://github.com/googleapis/elixir-google-api

具体例

configにGothの設定が必要ですが、下記のコードで取得できるはずです。

def get() do
  alias GoogleApi.Sheets.V4.Connection
  import GoogleApi.Sheets.V4.Api.Spreadsheets

  {:ok, token} = Goth.Token.for_scope("https://www.googleapis.com/auth/spreadsheets.readonly")
  conn = Connection.new(token.token)  # token.token を渡す点に少し注意
  sheetID = "XXXXX" # 自分で用意してください
  range = "A1:A2000" # A列を20000行まで(2000行までなくても値があるところまでとれる)
  sheets_spreadsheets_values_get(conn, sheetID, "A1:A2000")
end
get()
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?