Running it just once with a time pattern trigger is difficult, but throttling the execution of the actions for a certain time period is pretty easy:
- alias: Prevent automation from running more than once per hour
condition: template
value_template: |
{{ this.attributes.last_triggered | default(as_datetime(0), 1) < now() - timedelta(hours=1) }}
If you prefer the action to run just once, your best option is to go with Pete’s suggestion, but make it a trigger-based template binary sensor.