I've got the same problem, but I was going to try and solve it a different way.
I don't know much about scripting, but will this let follower through as well ?
Honestly I find this solution to be plenty enough. If you're worried about the player seeing something he shouldn't, you could fade his screen to black before the move process occurs (it's what I do) and then take it away after he is moved.
I actually don't know too much about a follower coming with you by doing this, but I think if you want a follower to go through you would need to use the game.fasttravel command.
I'll edit my code to what it should look like for what you want to do. I'm assuming you know enough about properties that you can set up the IMod and keyword stuff yourself.
; Move the player to the specified object referenceFunction MovePlayerTo(ObjectReference LocRef) ; Fade the players vision to black FadeToBlackHoldImod.Apply() ; In order to avoid a cell bug of unknown cause, we must make the player take a pit stop to a different cell if he is moving to a city. ; However, we want to bypass this check if the player is already in the same cell as his target location. If (LocRef.GetCurrentLocation().HasKeyword(LocTypeCity)) && (Player.GetCurrentLocation() != LocRef.GetCurrentLocation()) Player.MoveTo(PitStopReference) Utility.Wait(0.15) EndIf ; Move the player to the target reference, but use fast travel to bring the follower. Game.RequestAutoSave() ;If you want it to function as a normal fast travel, request an autosave. Game.FastTravel(LocRef) ; Return the players vision to normal FadeToBlackHoldImod.PopTo(FadeToBlackBackImod) FadeToBlackHoldImod.Remove()EndFunction