以下のエントリを参考にさせていただきながら、Googleドライブの指定したフォルダにファイルをアップロードしようとしているが、うまく行かない。
(ルートフォルダ上へのアップロードは問題なくうまく行っている。)
Python, PyDriveでGoogle Driveのフォルダ作成、ファイル移動、一括処理 | note.nkmk.me
PyDriveを使うとPythonからGoogleドライブを簡単に操作できる。ここでは、Googleドライブ上のフォルダ関連の操作について説明する。Googleドライブにフォルダを作成 ローカルのファイルを指定のフォルダにアップロード Googleドライブのファイルを指定のフォルダに移動 Googleドライブのフォルダ...
以下のように表示されてフォルダ指定ができない。
hogehogeはアップロード先のフォルダで、グーグルドライブに存在していることは確認済み。
1 2 3 4 | Traceback(mostrecentcalllast): File"gdrive_uproad.py",line16,in<module> folder_id=drive.ListFile({'q':'title = "hogeghoge"'}).GetList()[0]['id'] IndexError:listindexoutofrange |
原因と対処
googleのドキュメントを見ていると、必要なスコープが足りていないと気づいた。

API-specific authorization and authentication information | Google Drive | Google Developers
対処として、「settings.yaml」 ファイルへ「https://www.googleapis.com/auth/drive.appdata」を追加した。
以下は変更後のyamlファイル。
また、yamlファイル変更後、「 credentials.json 」は一度削除、
再実行することで、当該プログラムのアクセス権限を変更可能。
フルアクセス権限に近いので危険な気もする。
スクリプトが正常に動作したあと、気になる場合は権限を見直すとする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 |
コメント