お久しぶりです。どうも如月です。
私は、学校の寮に鎮座しています。
そんな寮では、風呂場が人で溢れかえらないように浴室予約システムというものがあります。
【ログイン画面】

【予約画面】

この作業を毎日確実にすることが自分の寮生の義務となります。
(これを行わないで風呂に入る行為は死刑です)
しかし、私は思いました。
だるぅ
と、いうことで今回はWindowsの標準に備わっているメモ帳を使ってvbsファイルを作成して、自動で予約するプログラムを作成していきます。
この記事で学べること
この記事は、基本的に自分と同じ学校の寮生に向けて作っています。
(というかそれぞれのサイトに寄ってどの要素をクリック…などが変わってきます。)
ただし、当サイトではこのプログラムはこういう意味だよと一つ一つ説明いたしますので、それらを組み合わせることで誰でもシステムが作れます。
使用用途例)Twitterのログイン、時間になったら特定のページを開いてくれる、などなど….
プログラムの全貌(忙しい人向け)
こんなガキの書いた記事なんて読む暇ないわ!!!!!って人は
以下のプログラムをコピペしてURL、ID、PASS、時間をそれぞれ自分のものに設定してお使いください。
と、いうか自分と同じ寮生向けです。違う場合はそれぞれのサイトのHTMLを読み取って適宜調整してください。
(該当サイトを開いてF12を押すことでそのサイトのHTMLデータが見れます。)
'InternetExplorerを起動-------------------------------------------
'WScriptを起動する文(お約束)
Set objShell = WScript.CreateObject("WScript.Shell")
'InternetExplorerを開く
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
'Webサイトを開く
'【予約システムのサイトのURLをしてください】
objIE.Navigate2 "https://◯◯"
'ページが読み込まれるまで待つ
Do Until objIE.Busy = False
'0.1秒毎にページが開いたか確認して待つ
WScript.Sleep 100
Loop
'ログイン---------------------------------------------------------
'IDを入力
'【ID入力してください】
objIE.document.forms(0).userid.value = "◯◯"
'パスワードを入力
'【パスワードを入力してください】
objIE.document.forms(0).password.value = "◯◯"
'ログインボタン
objIE.document.forms(0).elements(2).click
'ページが読み込まれるまで待つ
Do Until objIE.Busy = False
'0.1秒毎にページが開いたか確認して待つ
WScript.Sleep 100
Loop
'時刻ボタン-------------------------------------------------------
'時刻の要素を選択(0から)
'【時刻の要素を◯に入力してください。大風呂19:05 ~は「7」小風呂19:05 ~は「23」です。】
objIE.document.forms(0).elements("desired_time")(◯).Click
'予約ボタン-------------------------------------------------------
'予約ボタンをクリックする
objIE.document.forms(0).elements(32).click
'閉じる-------------------------------------------------------
objIE.Quit
さてさて、それでは作り方と解説をしていきます。
自動予約プログラムを作成する
InternetExplorerを起動するプログラム
まずはテキストドキュメント(メモ帳)を新規で作ります。
【右クリック】→ 【新規作成】→ 【テキストドキュメント】

名前は何でもいいですが、ここでは「浴槽予約自動システム」とします。
(この時点で.txtの拡張子を.vbsにしてもいいですがわかりやすくこのままで)

ではテキストドキュメントを開いてください。
まず、今回はInternetExplorerにて予約の自動入力をします。
Google chrome は….
え、Google chromeじゃだめなの?!と思うかもしれませんが、vbsで開くことはできますがWindows標準のアプリケーションではないため、vbsでボタンを押す、入力するといった操作ができません。
あ、そもそも余談だけどvbsってwindowsのプログラミング言語です。
それでは早速プログラムを書いていきます。
コピペしてもいいですが自分でうったほうが勉強になります。僕ならコピペしますが。
では一行目からどんどん行きます。
順番に入力してください。
Set objShell = WScript.CreateObject("WScript.Shell")
これは「お約束」の文です。これがないとWScript.Shellというものが立ち上がらず、vbsが動きません。
なんせ必要なんです。コピれ。
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
これはInternetExplorer.Applicationを開くプログラムです。
次の行、objIE.Visible = Trueと書くことでInternetExplorerをプログラミングで操作できるようになります。
objIE.Navigate2 "https://◯◯"
見たとおり、入力したサイトを開くプログラムです。
僕の場合はここでログイン画面を開いています。
Do Until objIE.Busy = False
WScript.Sleep 100
Loop
Do Until objIE.Busy = Falseはページが読み込まれるまで待つプログラムです。
WScript.Sleep 100は0.1秒ごとにページが開いたかを確認する。
Loopはもしまだ開いてなかったらもう一度 WScript.Sleep 100 を実行する。という意味です。
これらはセットで入力しないとエラーがですので、気をつけましょう。
テスト①
ここで一度ここまでが動作するか確認しましょう。
まずはこのファイルを動くようにしなくてはなりません。
【ファイル】→【名前を付けて保存】

ファイル名の拡張子を「.txt」から「.vbs」に変更します。
ファイルの種類も「すべてのファイル」にしましょう。

保存してください。

この様なファイルが出来上がります。
ダブルクリックするだけで開きますので動作を確認してみてください。
再度編集を再開するには
作ったファイルを【右クリック】→【編集】で再度編集が可能です。

ログインをするプログラムを作る
ログインページまで起動できたら自動でログインするプログラムを作ります。
ログインページをInternetExplorer以外で 開いてF12を押すことでそのページのHTMLを見ることができます。

また、選択した部分がどんなコードで書かれているかもわかります。
画像のように、F12を押してでた画面の左上に矢印を押してID(学籍番号)の部分をクリックします。


こうすることで該当する部分のHTMLが見れます。

HTMLを見るとそれぞれ変数のnameが「userid」、「password」であることがわかります。
ですので、これらに値を代入するプログラムを書いていきましょう。
objIE.document.forms(0).userid.value = "◯◯"
objIE.document.forms(0).password.value = "◯◯"
objIE.document.forms(0)は「一個目のフォーム」を表します。
プログラミングの世界では0から数が始まるので気をつけてください。
.userid.value= “◯◯”で変数「userid」に「〇〇」という文字列を代入します。
数字だけの場合〇〇でいいですが、英語や日本語を含む文字列として扱う場合は”◯◯”とダブルクオーテーションで囲う必要があります。
まぁよくわからなくても囲ってください。
次にログインボタンを押すプログラムです。
objIE.document.forms(0).elements(2).click
上から「学籍番号」「パスワード」「ログイン」とあるので、3つ目の要素をクリックするプログラムです。
上から3つめだけど、プログラミングの世界では0から数字が始まります(n回目)
Do Until objIE.Busy = False
WScript.Sleep 100
Loop
前と同じようにページを切り替えるので読み込まれるまで待つプログラムを挿入します。
保存をしよう
プログラムを保存するときは「ctrl+S」で保存ができます。
テスト②
ここまでのプログラムを保存して無事にログインが完了できるか試しましょう。
時刻を選んで予約をするプログラム
最後のプログラムです。
まずは予約画面を確認してHTMLを読み取りましょう。

予約システムを見るとたくさんの要素があります。
試しにボタンをF12で覗いてみます。

変数名が「desired_time」であることがわかりました。

今回は上の画像のように大風呂の22:25に予約してみます。
objIE.document.forms(0).elements("desired_time")(15).Click
左から16番目のボタン…ですが0から始まるので15をクリックするプログラムを書きます。
先ほど変数名が「desired_time」でした。
このように「_(アンダーバー)」を含む場合は”(ダブルクオーテーション)で囲う必要があります。
最後に予約のボタンを押すプログラムを作ります。
objIE.document.forms(0).elements(32).click
最後(一番下)にボタンがあるのでボタンの数を数えて数字を入れます。
テスト③
それでは試してみましょう。
このように選んだ時間に予約できていることがわかりました。

InternetExplorerを閉じるプログラム
ちゃんと予約を取れていることがわかったら、全てのプログラムができたら InternetExplorerを閉じるプログラム書きましょう。
objIE.Quit
これを最後に書くことで実行したら勝手にウィンドウが消えます。
ちゃんと予約を取れていることが心配な人は書かなくてもいいと思います。
まとめ
いかがだったでしょうか。
メモ帳でプログラムを書くといろんなことができることがわかったと思います。
過去には株の価格を読み取ってサイトで自動で売買するプログラムを作ったりしました。
次回は作ったvbsファイルをPCを閉じてても指定した時間で自動で実行する方法を記事にしたいと思います。
何かわからないことあれば聞いてください。
ではでは。
コメント