If you can provide up and down limit switches whose contacts OPEN at each of the extremes, it's cake from there.
Two SPDT relays (The automotive ones are really cheap) can very simply provide a means to go UP or DOWN.
The relays are essentially connected such that the common terminal goes to the motor and the Normally open (NO) terminal goes to +12 Always. The Normally Closed (NC) terminal of both relays go to ground.
Thus, the motor is shorted if neither relay is activated, so the motor acts as a generator into a short and stops instantly.
At this point there is no limit switches.
You can chose to make the coils common to +12 or common to GND. Let's use Ground as a common to make things a bit easier to understand.
So, we now have two wires left over. If we apply +12 to one, the motor goes up. If we apply +12 to the other, the motor goes down. If we apply +12 to both, the motor also stops.
So, we take the UP limit switch and put it in series with the UP relay coil, so it stops the motor when the door is fully up.
We do the same for the DOWN signal.
Now we have a circuit where when +12 is applied through the UP limit switch to the UP relay, the door goes up and vice versa,
Your timer provides +12, so have that run to an SPDT relay to have potential free contacts. Take the common of this relay and attach it to +12. Take NC and attach to UP and NO and attach to the down relay. Now, when the timer is ON, the door goes up. When the timer is OFF, the door goes down.
That's basically it in words.