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