園児ニアのメモ

ただのエンジニア。何でも屋みたいな扱い受けてます。

【AppleScript】ブラウザを開いて自動で入力する

勤怠など毎日入力するのが面倒な部分があるので作ってみました。
AppleScriptを使用しますのでMacのみ対応しています。

●やりたいこと
・勤怠入力で最初から定型文を入力する
・完全自動化もできるが勤怠なので作業内容などは色を変えて入力を指示だけにする

今回はZACという勤怠管理ツールを参考に書きます。
↓普通にブラウザで開いた勤怠入力画面
f:id:nanokanato:20170914121617p:plain:w300
起動時に今日の日付になるのは自動ですが...
毎日、出勤時間,退勤時間,作業時間などはある程度テンプレなど前日のデータを入力していてほしいです。

AppleScriptでテンプレ入力

AppleScriptとは、文字通りAppleが開発したMacOS用のオブジェクト指向スクリプト言語です。

AppleScriptは「Application/Utility/スクリプトエディタ.app」で開発することができます。
実行ボタンを押すことで実際にどんな動作をするか確認できます。

以下は実行することでGoogle Chromeを起動し、勤怠のページを開いて最初から入力していてほしい部分に定型文を入れるソースです。

tell application "Google Chrome" to run
tell application "Google Chrome" to activate
tell application "Google Chrome"
	tell window 1
		set newTab to make new tab with properties {URL:"https://hogehoge.zac.ai/hogehoge/Shinsei/Nippou.asp"}
		repeat while loading of active tab
			delay 1
		end repeat
		tell active tab
			-- 出勤時間の入力
			execute javascript "var start_time_hours = document.body.getElementsByTagName('select')[1].getElementsByTagName('option');"
			execute javascript "for(var i = 0; i < start_time_hours.length; i++){
								if(start_time_hours[i].value == '10'){
									start_time_hours[i].selected = true;
									break;
							 	}
							   }"
			-- 退勤時間の入力
			execute javascript "var end_time_hours = document.body.getElementsByTagName('select')[4].getElementsByTagName('option');"
			execute javascript "for(var i = 0; i < end_time_hours.length; i++){
								if(end_time_hours[i].value == '19'){
									end_time_hours[i].selected = true;
									break;
							 	}
							   }"
			
			-- 作業内容を登録
			execute javascript "var task_time_hours = document.body.getElementsByTagName('select')[57].getElementsByTagName('option');"
			execute javascript "for(var i = 0; i < task_time_hours.length; i++){
								if(task_time_hours[i].value == '8'){
									task_time_hours[i].selected = true;
									break;
							 	}
							   }"
			
			execute javascript "document.body.getElementsByTagName('select')[61].style.backgroundColor = 'skyblue';"
			execute javascript "document.body.getElementsByTagName('textarea')[6].style.backgroundColor = 'skyblue';"
		end tell
	end tell
end tell

AppleScriptを実行して開かれた勤怠入力画面
f:id:nanokanato:20170914121900p:plain:w300
・出勤時間と退勤時間はデフォルトを入力。
・作業時間もデフォルトを入力。
・作業内容の部分に色をつけて編集しないといけないことを指示。

若干ですが、煩わしい選択が少し減ることで毎日続けれる気がします。

スクリプトエディタで「ファイル > 書き出す...」を選択し、フォーマットをアプリケーションにすることで.appのアプリケーションファイルを作成できます。

毎日これをクリックすることで最初からテンプレートが入力された状態のページを開くことができます。