Skip to content

Instantly share code, notes, and snippets.

@okainov
Forked from leshikus/timesheet.ahk
Last active February 29, 2024 10:30
Show Gist options
  • Save okainov/5e5bd3c05d8c52cbdbb3ef0066030c0b to your computer and use it in GitHub Desktop.
Save okainov/5e5bd3c05d8c52cbdbb3ef0066030c0b 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
# 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