ファイルアップロード編
最初はRubyで頑張ろうとしたのですが、ライブラリがα版で開発が止まっていたため(メンテナンスは継続されるらしいですが)、Pythonに切り替えて実装しています。
最初に認証を済ませるところまではクイックスタートの手順を参考にしてください。
vagrant環境で実施したため、ブラウザなしで認証を済ませるため、以下のオプションが必要だった以外は上記の手順通りに進むことができました。
python3 quickstart.py --noauth_local_webserver
quickstart.py
のとおりだと新しいファイルを10件表示して終わりです。今回は、「Driveのpicturesというディレクトリにローカルのpicsフォルダにあるfoo.jpgという画像をアップロードする」機能を実装してみました。ディレクトリが存在しない場合は、作成します。
items = service.files().list(q="name = 'pictures'").execute().get('files')
if len(items) == 0:
body = {'name': 'pictures','mimeType': "application/vnd.google-apps.folder"}
fid = service.files().create(body=body).execute().get('id')
else:
fid = items[0]['id']
body = { 'name':'foo.jpg', 'parents':[fid] }
service.files().create(media_body='pics/foo.jpg', body=body).execute()
ファイルもディレクトリも実体は名前(name)と異なるIDで管理されていることに注意が必要です。このサンプルを2回実行すると、foo.jpgというファイルが2つ生成されます。上書きもしくは書き込みをスキップしたい場合は、同名のファイルが既に存在しないかどうかチェックが必要です。