Edited at

google driveをコマンドラインで操作する


  • gdriveの具体的な使い方

  • gdriveでOCRを利用する方法

  • jupyter notebookからgdriveをつかう

[gdrive] 英語になるが、ここに記述していないサンプルはこちら


用意

gdrive - for 64bit

Windows7 - 64bit


導入

githubからダウンロード

Cドライブにgdriveフォルダを作って放り込んでおく。

無題.png


使い方


普段コマンドプロンプト使用しない人用.

C:\user>cd C:\gdrive

C:\gdrive>


  • Googleドライブの中身を知る

C:\gdrive> gdrive list

Id Name Type Size Created
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz1 filename1.exe bin 60 Mb 2019-02-11 00:00:00
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz2 filename2.exe bin 60 Mb 2019-02-11 00:00:01
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz3 filename3 doc 60 Mb 2019-02-11 00:00:02
abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz4 filename4.exe dir 60 Mb 2019-02-11 00:00:03


ダウンロード


  • ファイル(bin)のダウンロード

C:\gdrive> gdrive download abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz1

Downloading ファイル名.* -> ファイル名.*
Downloaded abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz1 at 1000 KB/s, total 60 MB

・ファイル名はつかえない


  • ディレクトリのダウンロード

C:\gdrive> gdrive download abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz4 -r もしくは --recursive

・最後に -r もしくは --recursive オプションをつける必要がある

・ファイル名はつかえない


アップロード


  • ファイルのアップロード

C:\gdrive> gdrive upload ファイル名.*


  • ディレクトリのアップロード

C:\gdrive> gdrive upload ディレクトリ名.* -r もしくは --recursive

・最後に -r もしくは --recursive オプションをつける必要がある


OCRをつかう

txt形式に直接変換することはできない。

あくまでもgoogle document形式となる

C:/gdrive> gdrive import ファイル名.png -p abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz3

・ファイル名はつかえない


コマンドラインからgdriveを使う


gdrive.

import subprocess

cmd = "gdrive list"
subprocess.call(cmd, shell=True)

別記事でsubprocessモジュールについていろいろ確認する予定


使用制限

Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded

こういうようなエラーがでることがあるが、GoogleAPIには一日の使用回数に制限がある。

yoZku.png

1,000,000,000 回/一日

1000 回/100秒/1人

とのこと。


細かい設定(query)について

各コマンドにqueryがつかえる。

queryは、ファイル・フォルダに含まれている文字レベルでの検索・操作を可能にする機能。

たとえばこんなことができる。


フォルダにsがはいっているものをリストに出力.

C:/gdrive> gdrive list -q "name contains 's'"


これはめちゃめちゃ便利。

指定ファイルをダウンロードするときは


フォルダにsがはいっているものをリストに出力.

C:/gdrive> download query "name contains 's'"



mimeで拡張子を決めてからダウンロード.

C:/gdrive> gdrive export --mime text/plain abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgz3


mimeの設定についてはこちら

Corresponding MIME typeの列にいろいろと書いてあります。

・HTMLでダウンロードしたいなら、text/htmlとか。

・PDFでダウンロードしたいなら、application/pdfとか。

・エクセルでダウンロードしたいなら、application/vnd.openxmlformats-officedocument.spreadsheetml.sheetとか。


まとめ、今後

ファイル、フォルダ指定にファイル名フォルダ名が直接つかえないことがあり、そこが一番めんどうだった。

gdrive list命令でIDを取得できるなら、それを使えということか。

バッチファイルでコマンドラインの自動化ができるようなので、今後一連の流れを記述したものを作っていきたい。


参考

Qiita - Google が提供する API のリクエスト上限数一覧

Qiita - pythonanywhereでファイルのバックアップにGoogleドライブを使う方法

stackoverflow - What is the limit on Google Drive API usage?