Google Driveにファイルをアップロードする際、毎回ブラウザを立ち上げてファイルをドラッグ&ドロップ・・・という作業が面倒くさかったため、prasmussen gdrive (Google Drive CLI Client)を導入した。
コマンドプロンプトからGoogle Driveへファイルをアップロードできるため、バックアップ処理のバッチ化のために導入(導入方法や使い方はここやここが詳しい)。
しばらくは問題なく使用できていたのだが、最近になって下記のエラーによりアップロードができなくなっていた。
Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
初めは「そんなにたくさんファイルアップロードしてないけど、使い過ぎだったのかな?」と思っていたが、どうやらユーザー単位ではなく、アプリケーションに割り当てられたAPIの利用限度に達してしまった様子。おそらくこのアプリケーションを使っている全員が同じ現象に見舞われているだろう。
解決方法があった!
予想的中。皆さん困っていたようで、GitHubのIssueページに解決策が書き込まれていた。
TUTORIAL: How to get rid of 403 Errors (For Windows) · Issue #426 · prasmussen/gdrive · GitHub
要約すると「自分でGoogle Drive APIを申請し、コンパイルし直す」ということ。詳細は上記リンク先を確認して欲しいが、以下に簡単に紹介しておく。
1.Goのダウンロード&インストール
Goという言語で書かれているそうなので
https://golang.org/dl/からダウンロードしてインストール。
2.Gitのダウンロード&インストール
GitHubからプロジェクトを取り込むために
Gitもインストール。
3.プロジェクトファイルのダウンロード
プロジェクトをZIP形式でダウンロード。
任意の場所に解凍しておく。
4.APIの登録
Google Developer APIにアクセスし、「新しいプロジェクト」をクリックしてプロジェクトを作成。
プロジェクトを作成したら、Google Drive APIのページに移動し、これを有効化する。
「認証情報」→「認証情報を作成」→「ウィザードで選択」の順に選択。
・使用するAPI「Google Drive API」
・APIを呼び出す場所「その他のUI(Windows、CLIツールなど)」
・アクセスするデータの種類「ユーザーデータ」
を選択して登録する。
クライアント情報が表示される。この「クライアントID」と「クライアントシークレット」を後で使用する。
5.クライアント情報を書き換え
3で解凍したファイルのうち、
handlers_drive.goを開き、ClientIdとClientSecretを先ほど取得したものに置き換える。
6.コンパイル
コマンドプロンプトを起動し、先ほど書き換えた
handerls_drive.goがあるフォルダへ移動。
そして以下のコマンドを実行
go get github.com/prasmussen/gdrive
go build
するとexeファイルが作成される。これでAPI IDを自分のものに置き換えたexeファイルの作成が完了。
7.認証情報の削除
%appdata%フォルダにある
.gdriveを削除すれば既存の認証情報が消える。
コンパイルしたexeを初回実行する際、再度認証が必要になる。認証後、これまでと同じようにGoogle Driveにアクセスできるようになった。
とりあえず一件落着。日本語の情報がなかったので何かの参考になれば。
bigo 返信
同じ症状でずっと困っていましたが、無事解決しました。
有益な情報ありがとうございます。
takeruからbigoへの返信 返信
色々と雑に書いてしまった手抜き記事でしたが、お役に立てたようで何よりです!