Google Driveにはプログラムから色々な操作を行うためのAPIが用意され、またそのAPIを簡単に呼び出せる各言語用の公式SDKが用意されている。公式SDKが使いにくいということはないが、実際に使いたい場面ではAPIの呼び出しのチェインやエラーハンドリング、パラメータの指定方法の都合などで少しばかり冗長なコードを書かざるを得ない部分がある。過去数年いくつかのシステムでGoogle Driveに関する機能の実装をしてきたが、振り返ってみると同じような冗長なコードをそれぞれのプロジェクトで書いてきていたので、このタイミングでコードを共通化して使いまわせるようにライブラリを作った。
https://github.com/yokoe/hakucho
v0.0.4現在、下記のような処理が実装されている。
- フォルダの作成
- ファイルのアップロード
- アクセス権限の付与
- ファイルの削除
- 検索
例えば、ファイルの検索であればページングの処理なども含めて下記のように書くことができる。
files, err := hakucho.NewClient("/path/to/secret.json", "/path/to/token.json")
.ListFiles(
[]string{"id", "createdTime", "name"}, // 作成日時、ファイル名などを結果に含める
20, // 最大20件
option.FullTextContains("Guitar"), // ファイル名や内容にGuitarが含まれるもの
option.OrderBy("createdTime"), // 作成日時順に並び替える
)