以前、Google Colaboratoryで作ったノートブックを定期的に自動実行するため、SeleniumでGoogleにログインし、ノートブックのURLを開いて実行ボタンを押す、という一連の流れを実装したのですが、最近それを久々に使おうとしたらログインのところでエラーになりました。スクリーンショットをとると以下のような画面になっていたようです。
どうやらGoogle chromeをseleniumで操作してログインしようとすると、Google側がブロックするように仕様を変更したようです。いろいろページを調べて解決方法を試したのですが、どれもうまくいきませんでした。
結局Seleniumを使う方法はあきらめて、こちらのページで紹介されていたGoogle Chromeの拡張機能を使った定期的に自動操作する方法を採用することにしました。ただ、この方法だとGoogle Chromeを画面に表示できないサーバではそもそもGoogle Chromeを起動できないため、こちらのdockerイメージを使わせてもらって、VNC経由でGoogle Chromeにアクセスできるコンテナを起動し、そこに拡張機能をインストールして、Google Colaboratoryを自動実行する設定を行いました。
自動実行するにはページを開いたり、クリックしたりといった一連の操作をUI.Vision RPAという拡張機能に覚えさせて自動実行するのですが、ノートブックのページを開くとき、すでに過去に実行したノートブックを開いた状態で未保存だと、ページの内容を保存しなくていいかどうかを確認するダイアログが出てうまくいかないことがあり、結構はまりました。この課題を解決するため、自動実行は完全にノートブックの実行が終わって少し経過してから(自動保存される)行うように、自動実行する間隔を十分に空けるようにしました。これによってようやく、サーバ経由で定期実行できることが確認できました。
補足:2021年の9月中頃からこの方法での定期実行がエラーになっていました。なぜかわかりませんが、ノートブックの読み込みがずっと終わらない、という状態になっていたようです。とりあえず、このソースを使わせていただいてイメージをビルドしなおしてみたところ、うまくいきました。ビルドしなおすことでChromeのバージョンが新しくなったので、古いバージョンのクロームだと動かないようになったのかもしれませんね。
