3
1

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.

ElixirでGoogle APIを使う

Last updated at Posted at 2018-10-31

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()
3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?