Python selenium超初心者がぶつぶつ言ってます - neco-neko’s blog
の続きです。
Notionからワンクリックで外部サイトに自動ログインしたいがために、いろんなツールをお試ししています。
Webhookってなんだろうな - neco-neko’s blog
こちらのブログでSlackが使えなさそうな見込みになってきたので、Slackを無理に使わずに、makeという自動連係ツールをつかって構築してみようと思いなおしました。
イメージは、こんな感じです。
Step 1: Notionでボタン押下
↓
Step 2: ボタン押下タイミングでNotion上のDBが更新
↓
Step 3: DB更新タイミングでZapierやMakeなど自動化ツールのトリガー発火
↓
Step 4: ZapierやMakeからseleniumスクリプトを呼び出して実行
先に結論を言うと、Step4がうまくいきませんでした。。。
(なので参考にせず、失敗談としてテキトーに読んでください・・・)
まず、自動連係ツールの製品選定ですが、ZapierとMakeの中からMakeを選びました。
どちらも同じような製品なのですが、無料プランだとMakeのほうができることが多いという記事を読んだためです。
ただ、Makeは表示が英語なのでその点は苦労しました。
Makeを使って、まずはNotionでなんらか更新が発生したらSlackに通知が飛ぶという簡単なフローを作ってみました。
「なんらか更新」というのはデータベースの更新でもページの更新でもブロックの更新でもなんでもよいようなのですが、
NotionボタンができることとMake側の設定の簡単さを総合して、
ボタンを押したらデータベースに何かが書き込まれて、その書き込まれたという更新をトリガーにSlackに通知を飛ばす、
ということにしまして無事に成功しました。
さあ、いよいよ本番ということで、MakeからSeleniumスクリプトを呼び出すフローを作ろうと思いました。
がここからが大変でした。
まず、Make上でスクリプトを実行させるようなコマンドは発行できません。
あくまでイベントをトリガーにしてアプリケーションをつなぐフローを作るのがこのMakeであって、Make自体が処理を行うことはないようです。
なので、Seleniumスクリプトを実行する実行環境を用意して、そこにMakeを使ってリクエストする、
というような仕組みが必要になりました。
つまりStep4を細分化すると、
Step 4-1: FlaskなどのWebフレームワークを使用して、HTTPリクエストでSeleniumスクリプトを実行するエンドポイントを作成
↓
Step 4-2: このエンドポイントに対してMakeからリクエストを送信
Flask!?!?
よくわからない単語が出てきました。
簡易的なWebアプリケーションが構築できるフレームワークのようですね。
Flask奮闘記は割愛して、ここではFlaskを構築したところまで飛ばします。
とにかく、自分のローカルIPアドレスでブラウザ接続すると、Seleniumスクリプトが自動実行して、外部サイトに自動ログインできるところまで作り込みました。
あらためて、Step 4-2を実行しようとしたら、エンドポイントに指定するIPアドレスはローカルIPじゃダメみたいですね・・・
まあ冷静に考えれば、Makeはインターネット上にあるのでローカルIPじゃ繋がらないわけです。
さらに、Flaskの実行環境としてWebサーバみたいな必要な時にすぐに利用できる環境がないとだめですね。
となると、AWSのLambdaみたいな環境を用意しないとだめかもしれません。
少額とはいえコストがかかってしまうので今回はここで断念しました。
おしまい。