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/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()