Google API で遊ぶ

pythonでGoogle API を使ってみる

Driveの情報を取得する

リファレンス

 https://developers.google.com/drive/api/v3/reference/about/get?hl=ja 

実行確認環境

win10

python3.7.1

 

ドライブの情報を取得するのにはaboutのgetを使う。

基本構文は

fields = 'ほしい項目'
results = service.about().get(fields=fields).execute()

必ず引数にfieldsを渡さないといけない。

fieldsはほかのメソッドとも共通で、戻り値に含まれる情報を指定する。

必須の項目かオプションかはメソッドにより異なる模様。

About: getでもらえる項目はこちら

fieldsの書き方のリファレンスはこちら

 

①全部の項目が欲しい

fields = '*'

 *と指定するとすべての項目がもらえる。

パフォーマンスを気にするならちゃんとほしい項目だけに絞ったほうがいいらしい。

 

②ほしい項目を指定したい

1. 項目が1つの場合

戻り値はdict型なので、ほしい項目のkeyを指定する

例えばuserを指定すると戻り値はこんな感じ

fields = 'user'
results = service.about().get(fields=fields).execute()
pprint(results)
>python about.py
{'user': {'displayName': 'hoge',
'emailAddress': 'hoge@hoge.com',
'kind': 'drive#user',
'me': True,
'permissionId': '00000000000'}}

2. 項目が複数の場合

複数の項目が欲しい場合は,で区切って指定する

fields = 'user,maxImportSizes'
results = service.about().get(fields=fields).execute()
pprint(results)
>python about.py
{'maxImportSizes': {'application/vnd.google-apps.document': '10485760',
'application/vnd.google-apps.drawing': '2097152',
'application/vnd.google-apps.presentation': '104857600',
'application/vnd.google-apps.spreadsheet': '104857600'},
'user': {'displayName': 'hoge',
'emailAddress': 'hoge@hoge.com',
'kind': 'drive#user',
'me': True,
'permissionId': '00000000000'}}

3. 項目の中の項目に絞りたい場合

例えば、userの中のユーザー名のみを取得したい場合は/で区切る

fields = 'user/displayName'
results = service.about().get(fields=fields).execute()
pprint(results)
>python about.py
{'user': {'displayName': 'hoge'}}

ユーザー名とメールアドレスなど複数指定する場合は()で囲う。/は不要

fields = 'user(displayName,emailAddress)'
results = service.about().get(fields=fields).execute()
pprint(results)
>python about.py
{'user': {'displayName': 'hoge',
'emailAddress': 'hoge@hoge.com'}}

 複数でなくても()で指定できる

fields = 'user(displayName)'
results = service.about().get(fields=fields).execute()
pprint(results)
>python about.py
{'user': {'displayName': 'hoge'}}

4. 組み合わせ方いろいろ

指定した項目がlist型の中にある場合はlistの中のすべての該当項目を取ってくれる

fields = ['user(displayName,emailAddress)',
'storageQuota/limit',
'driveThemes(id)',
'canCreateDrives']
results = service.about().get(fields=','.join(fields)).execute()
pprint(results)
>python about.py
{'canCreateDrives': False,
'driveThemes': [{'id': 'abacus'},
{'id': 'blueprints'},
...中略...,
{'id': 'wood'}],
'storageQuota': {'limit': '16106127360'},
'user': {'displayName': 'hoge',
      'emailAddress': 'hoge@hoge.com'}}