Although the ability to publish and unpublish exists in the Scheduler module, it only applies to nodes.
This module allows you to schedule the publishing and unpublishing of any content entity type (node, term, or even path_alias (theoretically), plus any custom entity you might create - as long as it has a "status" property).
In addition it does this using the generic Event Scheduler module that uses Symfony events rather than hooks.