pydriveでフォルダ・ファイルの取得ができない

スポンサーリンク

以下のエントリを参考にさせていただきながら、Googleドライブの指定したフォルダにファイルをアップロードしようとしているが、うまく行かない。

(ルートフォルダ上へのアップロードは問題なくうまく行っている。)

Python, PyDriveでGoogle Driveのフォルダ作成、ファイル移動、一括処理 | note.nkmk.me
PyDriveを使うとPythonからGoogleドライブを簡単に操作できる。 ここでは、Googleドライブ上のフォルダ関連の操作について説明する。 Googleドライブにフォルダを作成 ローカルのファイルを指定のフォルダにアップロ .....

以下のように表示されてフォルダ指定ができない。

hogehogeはアップロード先のフォルダで、グーグルドライブに存在していることは確認済み。

Traceback (most recent call last):
File "gdrive_uproad.py", line 16, in <module>
folder_id = drive.ListFile({'q': 'title = "hogeghoge"'}).GetList()[0]['id']
IndexError: list index out of range

 

スポンサーリンク

原因と対処

googleのドキュメントを見ていると、必要なスコープが足りていないと気づいた。

Choose Google Drive API scopes  |  Google for Developers

対処として、「settings.yaml」 ファイルへ「https://www.googleapis.com/auth/drive.appdata」を追加した。

以下は変更後のyamlファイル。

また、yamlファイル変更後、「 credentials.json 」は一度削除、

再実行することで、当該プログラムのアクセス権限を変更可能。

フルアクセス権限に近いので危険な気もする。

スクリプトが正常に動作したあと、気になる場合は権限を見直すとする。

client_config_backend: settings
client_config:
client_id: 'XXX'
client_secret: 'XXX'


save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json


get_refresh_token: True


oauth_scope:
- https://www.googleapis.com/auth/drive.file
- https://www.googleapis.com/auth/drive.install
- https://www.googleapis.com/auth/drive

 

スポンサーリンク
Python技術的なこと雑記帳
Heywaをフォローする

コメント

タイトルとURLをコピーしました