Does anyone how to fix this Global leaderboard script? its not working

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")

local LevelGlobalStore = DataStoreService:GetOrderedDataStore("LevelGlobalStore")
local Board = workspace.LevelsLeaderboard.GlobalBoard

local Template =  Board.SurfaceGui.Leaderboard.Template:Clone()
Board.SurfaceGui.Leaderboard.Template:Destroy()


local function update()
	
	for _,child in pairs(Board.SurfaceGui.Leaderboard:GetChildren()) do
		
		if child:IsA("Frame") then
			
			child:Destroy()
		end
	end
	local success,err = pcall(function()
		
		local data = LevelGlobalStore:GetSortedAsync(false,40)
		local page = data:GetCurrentPage()
		
		for rank,plrData in ipairs(page) do
			
			local userid = plrData.key
			local Level = plrData.value
			
			local new = Template:Clone()
			new.PlrName.Text = Players:GetNameFromUserIdAsync(userid)
			new.PlrAmount.Text = Level
			new.PlrRank.Text = tonumber(rank)
			new.LayoutOrder = rank


			new.Parent = Board.SurfaceGui.Leaderboard
			
			
		end
	end)
end

while true do
	
	update()
	
	wait(math.random(10,15))
	
	spawn(function()
		
		for _,plr in pairs(game.Players:GetPlayers()) do
			
			LevelGlobalStore:SetAsync(plr.UserId,plr.leaderstats.Level.Value)
			wait()
			
		end
	end)
end