If you hide the sheet by the help of variables is always works if you are hiding the shhet by the use of macros so it will not work correctly some times. But if forcelly you want to run it try to schedule the application on windows schedular then it works correctly.
You did not specify if you're using the IE plugin or AJAX interface to access the document. If you're using the IE plugin, then you can use the OnOpen trigger. If you're using AJAX, the OnOpen trigger does not work; you will need to uses variables or store the access in a table. I would recommend using a table especially if different users have access to different sheets. Your table can look something like this:
LOAD * INLINE [
USER, sheet1, sheet2, sheet3
user1, 1, 0, 0
user2, 0, 1, 1
where USER is a column linked to a column in your section access so only one row is availabe when a user opens the document. In the conditional field in the sheet properties you can have something like: