not sure if this will help, but this is how i update my GUI that has an item with a constantly changing timer in it
every 1 second:
set {smuggler::globalTimer} to 300 if {smuggler::globalTimer} is not set
if {smuggler::globalTimer} > 0:
subtract 1 from {smuggler::globalTimer}
#attempt to update timer in GUI if currently opened
loop all players:
if name of loop-player's open inventory is "%yaml value "GUI.AlienShopMain.Title" from "aliens.yml"%":
set slot 44 of loop-player's open inventory to clock named "&aʀᴇѕᴛᴏᴄᴋ ᴛɪᴍᴇʀ" with lore "", and "&a| &7Time Left: &a%secondsToTime({smuggler::globalTimer})%"
#Refresh Smuggler + reopen GUI if currently opened
if {smuggler::globalTimer} is 0:
broadcast "%yaml value "Tools.Prefix" from "aliens.yml"% %yaml value "Tools.SmugglerRefresh" from "aliens.yml"%"
#add play sound function when done
set {smuggler::globalTimer} to 300
loop all players:
generatePlayerStock(loop-player)
if name of loop-player's open inventory is "%yaml value "GUI.AlienShopMain.Title" from "aliens.yml"%":
open alienShop(loop-player) for loop-player