以下のエントリを参考にさせていただきながら、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
コメント