Skip to content

Instantly share code, notes, and snippets.

@leshikus
Last active February 29, 2024 10:26
Show Gist options
  • Save leshikus/26acb095a03145be0303539ce0a4f595 to your computer and use it in GitHub Desktop.
Save leshikus/26acb095a03145be0303539ce0a4f595 to your computer and use it in GitHub Desktop.
Fill Workday timesheets (Chrome, F11 for fullscreen, windows settings: 1980x1080, 175% scaling)
#Requires AutoHotkey v2.0
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)
loop 5
{
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 := "10"
end1 := "14"
start2 := "15"
end2 := "19"
delay := 300
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(74, 1048, "0xF99F2A", 50) ; wait for orange OK button to appear at the bottom left, 10 sec
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)
MsgBox("You are awesome")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment