時間待ちに頼らず、“状態を見て動く”自動返信スクリプトを作った話

記事
コラム
■ 導入:一覧から順に、自動で返信していきたいという相談

今回紹介するのは、
あらかじめ用意したリストに基づいて、
ブラウザ上で自動返信操作を行っていくスクリプトの案件です。

依頼者の方は、

返信対象ごとに「URLに入れる文字列」と

それに対応する「返信文」

を replies.tsv にまとめており、
それを元に intent URL を開いて返信画面を出し、送信まで自動化したい
という要望でした。

見た目はシンプルな「自動返信」の相談ですが、
実際には ネットワーク遅延や画面の状態変化に左右されない“確実な動作” が求められる案件でした。

■ 課題:時間待ちだけでは、ネットワークや画面の揺らぎに対応できない

自動化でよくやりがちなのは、

「intentで画面を開く → ○秒待つ → Tabで移動 → 送信」

という、“決め打ちの時間待ち”だけで流れを作る方法です。

しかし、この方法には大きな弱点があります。

回線状況やサーバーの混雑によって、画面の表示時間が変わる

返信入力欄が出てくるタイミングが一定ではない

送信が終わるまでの時間も毎回同じとは限らない

つまり、「○秒待ったから大丈夫だろう」では、いつかズレる ということです。

依頼者も「できるだけ確実に送りたい」という意識を持っていたので、
ここは時間待機だけに頼らず、画面の状態そのものを見て判断できる仕組みが必要でした。

■ 改善①:intentウィンドウの“差分”を見て、今の状態を判定する

この案件でまずこだわったのは、
intentウィンドウの状態を「差分」で判定することです。

具体的には、

ウィンドウタイトルの変化などを利用して、
「返信入力が可能な状態」 なのか、
「返信送信が完了した状態」 なのかを見分ける

intentウィンドウが新しく開いたことを検知し、
そのウィンドウだけを対象として操作する

返信が終わったら、その intent ウィンドウだけを閉じる

という形で、

“いつ開いたのか/いつ閉じるべきなのか” を、時間ではなく状態で判断する

仕組みにしています。

これにより、
回線が遅いときでも速いときでも、
画面が整ったタイミングだけを狙って確実に操作できるようになります。

■ 改善②:Tabナビと返信文の自動挿入を、確実性重視で組み立てる

実際の返信操作は、

intent URLで返信画面を開く

Tabキーでフォーカスを移動し、返信欄に到達する

replies.tsv から読み込んだ返信文を入力する

送信操作まで自動で進める

という流れで動きます。

ここでも、
「Tabを何回押せばいいか」だけに依存するのではなく、
ウィンドウの状態を見ながら確実に進めていくように設計しました。

replies.tsv には、

intent URL に入れるべき文字列

その対象に対する返信文

が1行ずつ対応して入っています。
スクリプトはこれを順番に読み込み、
1件ずつ「開く → 返信 → 確認 → 閉じる」を繰り返す形です。

■ 改善③:失敗したときに“自然にリトライできる”構造にしておく

この案件に限らずですが、
私はどの自動化でも、

確実に実行すること

失敗したときは自動でリトライできること

にかなりこだわっています。

今回の自動返信でも、

intentウィンドウが開かなかった場合

表示が明らかにおかしい場合

送信完了の状態にならない場合

などを想定し、
そのまま止まってしまわないように、再試行やスキップの流れも考えて設計しました。

「一度でも失敗したら全体が止まる」のではなく、
“できる限り続ける” ための逃げ道を用意しておくことで、
依頼者が安心して長時間回せるスクリプトになります。

■ 成果:時間ではなく“状態”を見ながら、安定して送り続けられる自動返信へ

完成したスクリプトは、

intentウィンドウが開いた/閉じたタイミングを状態で判定し

Tabナビと返信文の挿入を安定して繰り返し

replies.tsv に沿って一件ずつ確実に返信し

ネットワークの揺らぎにも強い

という、「実際の運用でも任せられる」自動返信ツールになりました。

単に「○秒待ってから送る」という作り方ではなく、

“画面の状態をきちんと見てから次に進む”

という考え方を徹底したことで、
依頼者が求めていた「確実に送れる自動化」に近づけた案件だったと思います。

■ まとめ:時間制御ではなく、“確実性”を軸にした自動化

この案件は、

intentウィンドウの状態を差分で見分ける

時間待機だけでなく、画面の変化で判断する

失敗時のリトライやスキップも含めて設計する

といったポイントを通して、

「確実に実行されること」
を何より重視した自動化になりました。

今後紹介していく他の案件でも、

ただ動けばいいスクリプトではなく

“現場で任せられるレベル”の確実性

を意識して設計しているので、
そのあたりも合わせて読んでもらえたら嬉しいです。

▶「自分の作業も、確実に動く形で自動化してほしい」「失敗しづらい設計から相談したい」という方はこちら

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す