The 'basic scripting tutorial' is pretty saturated. It isn't worth it unless the tutorial is legitimately unprecedented from an insightful, experienced, successful coder, which I doubt you are. Not trying to stop you. But this is the likely consensus.
First of all, you should make it clear that the client table classes shouldn't be trusted on the server. The server should have its own table with the trusted values. Also, most of your client code is useless and can be shortened to:
local Class = game.ReplicatedStorage.Events.Class
local Buttons = script.Parent:GetChildren()
for a = 1, #Buttons do
local Button = Buttons[a]
if Button:IsA("GuiButton") then
-- Register the Button to a function
You should probably state that the classes table should be stored in a ModuleScript
With the limit, I was thinking you could determine to use a certain spreadsheet between two based on the users' userId. Example, if their userID was an even number you could use one spreadsheet over another to save data. This would just split the data between two spreadsheets, but doing something like that you could maybe use multiple spreadsheets.