One option that you might or might not have tried already is to use a tween for this.
You could add this to your player node:
tween = Tween.new()
and then when you want to move automatically (over a duration of, say, 1.5 seconds) you can run this on the player node
tween.interpolate_property(self, "global_position", global_position, hook_position, 1.5)
The syntax for the interpolate_property function is:
(Node with property you want to lerp, Name of property you want to lerp, Initial value, Final value, Duration)
Also, it's not exactly a lerp, since it eases in and eases out to make the motion not be jerky at the start and finish.