-
-
Save okainov/5e5bd3c05d8c52cbdbb3ef0066030c0b to your computer and use it in GitHub Desktop.
Fill Workday timesheets (Chrome, F11 for fullscreen, windows settings: 1980x1080, 175% scaling)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Requires AutoHotkey v2.0 | |
# Usage: load script, open Chrome page in Fullscreen, click Alt+A to execute | |
# If needed, modify start/end times and the coordinates of orange OK button | |
waitForPageLoad(x, y, color, attempts) | |
{ | |
Loop attempts | |
{ | |
sleep(200) | |
Loaded := PixelGetColor(x, y) | |
;MsgBox("Wait for " . color . " Get " . Loaded) | |
if Loaded = color | |
Return | |
} | |
MsgBox("Wait for page load -- page did not load") | |
Exit ; we want to terminate in case of timeout | |
} | |
fillSingleDay(day_w, start1, end1, start2, end2, delay) | |
{ | |
send("^{Home}") ; Make sure the page is in beginning | |
; click on Sunday -- it always has the same position | |
sleep(delay) | |
send("^fSo.,{Enter}") | |
sleep(delay) | |
send("{Esc}") | |
sleep(delay) | |
send("{Enter}{Enter}") | |
sleep(delay) | |
loop day_w | |
{ | |
send("{Right}") | |
sleep(delay) | |
} | |
loop 3 | |
{ | |
send("{Tab}") | |
sleep(delay) | |
} | |
sendtext(start1) | |
sleep(delay) | |
send("{Tab}") | |
sleep(delay) | |
sendtext(end1) | |
; Replace Meal to Out | |
send("{Tab}") | |
send("{down}") | |
sleep(delay) | |
send("{down}{Enter}") | |
sleep(delay) | |
loop 4 | |
{ | |
send("{Tab}") | |
sleep(delay) | |
} | |
sendtext(start2) | |
sleep(delay) | |
send("{Tab}") | |
sleep(delay) | |
sendtext(end2) | |
sleep(delay) | |
send("{Tab}") ; to move out of text input field | |
sleep(delay * 2) | |
;exit | |
} | |
#HotIf WinActive("Enter Time - Workday - Google Chrome ahk_class Chrome_WidgetWin_1") | |
!a::{ | |
start1 := "9" | |
end1 := "13" | |
start2 := "14" | |
end2 := "18" | |
delay := 200 | |
okX := 137 | |
okY := 1130 | |
sleep(delay) | |
send("^{Home}") ; Make sure the page is in beginning | |
sleep(delay) | |
send("^fActions") | |
sleep(delay) | |
send("{Esc}") | |
sleep(delay) | |
send("{Enter}{Enter}") | |
sleep(delay) | |
send("{Home}") | |
sleep(delay) | |
send("{Enter}") ; Select "Enter time" | |
waitForPageLoad(okX, okY, "0xFFA126", 50) ; wait for orange OK button to appear at the bottom left, 10 sec | |
sleep(200) | |
sleep(delay * 2) | |
click(800, 150) ; this great tool maximizes the window only after visiting its bottom | |
sleep(delay * 2) | |
send("^{End}") | |
sleep(delay) | |
fillSingleDay(1, start1, end1, start2, end2, delay) | |
fillSingleDay(2, start1, end1, start2, end2, delay) | |
fillSingleDay(3, start1, end1, start2, end2, delay) | |
fillSingleDay(4, start1, end1, start2, end2, delay) | |
fillSingleDay(5, start1, end1, start2, end2, delay) | |
click(okX, okY) | |
MsgBox("You are awesome") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment