

Pythonにおいてpydriveを使用しており、ListFile()で自身がオーナー（作成者）であるファイルのみをリスト化したいです。

[code]

    drive.ListFile({'q': 'title = "file1"'}).GetList()
    
[/code]

などでtitleやIDでの検索はできましたが、ownersのdisplayNameやemailAddressでの条件指定の方法がわかりません。

[code]

    GoogleDriveFile({'kind': 'drive#file', 'id': '89h43gqhogehoge','title':'file1,
    'owners': [{'kind': 'drive#user', 'displayName': 'tarou','emailAddress': 'tarou.hoge@mail.com'}],
    
[/code]

の様な構成で、このidやtitleではなくownersの中のemailAddress等で検索をかけるを教えていただきたいです。よろしくお願いします。


CC BY-SA 4.0
2020-11-18T10:01:58.333
72036
2020-11-19T01:46:01.407
2020-11-19T01:46:01.407
3060
36620
question
python google-drive-sdk pydrive
pydriveでListFileで条件指定する方法


`PyDrive`はDrive API v2を使用しているようですのでこれに注意する必要があります。このことを考慮して、下記に回答させていただきます。

> Q1: ListFile()で自身がオーナー（作成者）であるファイルのみをリスト化したい

回答: 自分のファイルのみをリストとして取得したい場合は、`q`の値として、`'me' in
owners`を使用することができます。また、自分以外のユーザの場合は、`'### email address ###' in
owners`を使用します。残念ながら、displayNameでの検索はできないようです。

> Q2: `GoogleDriveFile({'kind': 'drive#file', 'id':
> '89h43gqhogehoge','title':'file1,'owners': [{'kind': 'drive#user',
> 'displayName': 'tarou','emailAddress':
> 'tarou.hoge@mail.com'}],`の様な構成で、このidやtitleではなくownersの中のemailAddress等で検索をかけるを教えていただきたいです。

回答: Drive API
v2では、`fields`を指定しない場合、全てのmetadataが返されます。もしも上記のように必要なmetadataのみを取得したい場合は、`fields`を使用する必要があります。上記の場合、`items(id,title,kind,owners(displayName,emailAddress,kind))`を`fields`として使用します。

上記を使用されているスクリプトに反映させると、下記のようになります。

### 変更したスクリプト

[code]

    drive.ListFile({'q': "'me' in owners", 'fields': 'items(id,title,kind,owners(displayName,emailAddress,kind))'}).GetList()
    
[/code]

### 参考:

  * [PyDrive](https://github.com/googleworkspace/PyDrive)
  * [Files: list of Drive API v2](https://developers.google.com/drive/api/v2/reference/files/list)
  * [Search for Files](https://developers.google.com/drive/api/v3/reference/query-ref)


CC BY-SA 4.0
2020-11-19T01:21:53.940
72047
2020-11-19T01:21:53.940
19460
72036
answer