Activate Numbers app and populate chart every 30 minutes
This is a kind of half answer, just to be able to show the code properly.
You can eliminate all that redundancy with time comparisons using
set myTime to (time of date ((current date) as string))
if myTime & (round (myTime / 60) rounding down) mod 30 = 0 then
--do function
end if
This will run the function if the time is :00 or :30 minutes. The rounding is because otherwise it would be triggered between :59.30 & :00.30 [& same on the half hour]
After comments
For some reason I cannot fathom, as written that does not return a boolean comparison. This version does [times shortened for patience reasons]…
repeat 60 times
set myTime to (round ((time of date ((current date) as string)) / 60) rounding down) mod 5 = 0
if myTime then
display dialog "Triggered" buttons {"OK"}
else
display notification myTime
end if
delay 15
end repeat