Summary: Cron doesn’t run files with dots or underscores in them; remove that .sh!
Did you put your file in /etc/cron.daily or /etc/cron.weekly and it doesn’t run? Does cron just skip right over your file? Check that you don’t have a period or underscore in your filename. I’m talking about the .sh or .py you always put on your scripts. Yup, take that away.
All good now? I thought so.
It seems like I learn this lesson again every couple of years. This time I’m writing it down.
Update: A little additional research says that it isn’t cron; it’s run-parts that’s causing the problem. See the comments for details.