I've dealt with this. Heck, I'm dealing with it right now. If you absolutely can't schedule a game when everyone can make it, there are a few things you can try, which I have tried to mixed success.
1) Play Without Alice
Alice's schedule changed. That's not her fault, but that IS the reality. If this were my game, I'd reluctantly write Alice's character out in a way that leaves the door open for possible return.
This is generally the best solution for the group as a whole, and for the continuity of a single game. It requires no extra bookkeeping, doesn't make anyone run a spare character, etc. But of course it doesn't help Alice at all.
2) Non-Player PC's
Schedule games to allow the most people to attend at different times. Then, when a player isn't there, someone else runs their character. This can be the GM, another player (agreed to by both the absent player and the sub player), or the group as a whole. Regardless, the player should leave a few notes on tactics/behavior for others to try to follow.
This method will keep a game going, but can slow play. There's a bit more to keep track of, and players will need a recap of what they missed every time. It also carries the potential for upset players if someone plays their character wrong. Trust is important here
2a) NPC Alice's Character When She's Not There
Subset of 1 and 2. You play on the same day, and Alice's in the only character that gets NPCed. This is a good idea IF Alice's schedule is subject to change. When I did it, the player in question had a revolving work schedule, AND sometimes had last minute switches from his manager, so some weeks he'd show, some he wouldn't. When he showed, we'd fill him in and he'd take over his character.
3) Alternate Games
When Players A, B, and C are available, you run Demonic Dungeons. When Players B, C, and D are available, you run World of Dimness. This way, everyone gets to play, and no-one misses anything of their game.
This is my second favorite method, which I used with great success for a couple of years when a player could only make every other session. On session A, we'd play one game, and on session B we'd play another. Four players played every week and one played every two weeks.
Of course, your scheduling issues are more complex, and may need more than two games. This will reach a point of diminishing returns if the same person GMs all the games, as it pulls focus and makes more work for the GM.
Work =/= Fun
3a) A-Story, B-Story
A special case of Alternate Games. One game, separate, possibly intertwined storylines. This can be tons of fun if the GM is up for it. Often, players who can make both sessions need separate characters for each.
4) Make the absences an in-game thing
Play something where PCs can easily leave and return. This works really well if the game is something weird where people appear and disappear a lot.
Ages ago, I was a player in a long-running game of The Fantasy Trip where the GM simply decreed PCs appeared when their players were there and disappeared when they couldn't make it. It was demented, but we had fun. It was especially odd when it would happen mid-combat. :p
Fun For Everyone
Here's the thing. Do what's the most fun for the most people most of the time (and don't forget, the GM is a player too!). Some of the bending over backwards needed for some of these solutions will reduce someone's fun. Too many games, and the GM's fun may wane as he works harder. Running an extra PC is not much fun for most people.
Your players are invested in a different game.
The first group that I played with played the way you describe: mucking around town, not caring much about objectives, messing with every NPC they meet. It took us entire sessions to get through even the most basic of quest-giver scenes, and we delighted in spiking plot hooks and keeping the DM on his toes. I still play with that group, and it's still a lot of fun!
It is likely that your players have a very different view of the gaming experience--maybe socializing or being "off-task" is just a form of relaxation. While you may want to push through the prewritten campaign, maybe they want to just blow off steam and mess around in a fantasy world, doing things they'd never do in real life. Both viewpoints are perfectly valid ways of approaching a TTRPG.
On the other hand, the group I DM for is very plot-oriented---they will eat up quest hooks, and they will efficiently pursue their goals. When I first DMed for them, I was surprised that they completed a quest in the time it took my other group to stroll through town.
Adapt or pass the baton
Trying to force those players into "focusing" on the game will likely just swap your roles: you might be satisfied, but your players might chafe against your "railroading". The first DM of my first group tried to do this, and it caused a lot of friction in the group. Eventually, that DM became a player, and we had a different DM. This DM, instead of trying to run a coherent plot, simply had an omnipotent, insane NPC wizard teleport us around and told us to cause chaos. As you might imagine, this went over a lot better.
Additionally, instead of making deep dungeons or storylines, he focused on making more interesting NPCs and environments instead. This NPC focus meant that he was prepared to create interesting scenarios when we were messing around in town, and he didn't waste time on dungeons we would never enter. For example, in your tavern, you can have a champion or something challenge the PCs to a 1:1 fight, or give the shopkeep a interesting prank magic item (horn of baubles, maybe?). If your players like wandering off or doing individual things, plan more individual encounters or ones that don't require the whole party to be present. I realize you're trying to run a published adventure, but maybe that's not suitable for this group. You will probably get more mileage out of the adventure by using its encounters and NPCs as inspirations for your own modified campaign, rather than running it straight.
Basically, the three questions you ask at the end are basically, "how can I force my players to play how I want?" Instead, you should be asking, "how can I adapt my campaign for these players?" If the answer to that latter question makes you not want to be a DM anymore, then you should pass DMing responsibilities to someone else.
Best Answer
There are several things you can do. Most of them are not too great for your game, but unfortunately, people who don't help the group succeed are often more detrimental than I think they realize.
Aim for a cooperative solution
The first thing I'd do is send them a message explaining why their absence is a problem. If they're new, explain that an RPG requires some continuity, and people usually can't simply leave. If they're accustomed to tabletop RPGs, then you may want to emphasize the game itself. Be sure to phrase the question like you're asking them for their help. In general, if you phrase your questions and interrogations like you're asking for assistance or need others' help, they will be much more willing to help.
What I mean by this is: phrase your questions like you want to work with them to figure out what's going on, because ultimately, that's the better solution. Aim to work something out with them. Chances are good they'll come back and say "You know, I really just can't make it to those sessions. [Can we change the time around a bit?/Sorry, I'll have to drop out of the game.]"
If you can come to a cooperative consensus, you will prevent the dark cloud which has the potential to seep into the table and sour gameplay. The goal here is to make them aware of the problem, and open to coming up with a cooperative solution. If they're not both aware and willing, anything else you do won't go over well.
Oh, and one last thing: Try not to sound bitter about it. I know it's difficult, and I do it myself more often than I'd like to admit, but it actually doesn't accomplish much. You really do want to aim for a cooperative solution.
Actually resolving the issue
If your player still would like to play, 'tis time to think of a way to make it happen. Take a look at the list on As an unreliable player, how can I lessen the burden on my group?
Your ideas may differ, but here are the things I'd do:
Ask them to let you know when they're going to be gone, as far ahead of time as possible. As a GM, it's awful when you have a great, fantastic plan, and someone doesn't show up. You and I've both had this experience. To minimize this, it's helpful to know when a person is going to be absent.
Plan your campaign so that they're not critical to the storyline; make sure they know and understand why this is. You can't depend on somebody who's not necessarily going to be there. As such, you will have to plan around their absence. This will result in them being in the spotlight of the game less often. To prevent them being upset about this, make sure they understand why this is the case.
Ask them to provide reasons why their character might not be able to show up. In order to prevent random discontinuities, ask them to come up with reasonable excuses for their character's absence from play.
Suggest a proxy for when they can't show up. If they are already essential to the group, and will be late frequently, ask them if they would be okay with assigning a proxy, and then discuss with the group if anyone would be willing to act as a proxy on thier behalf.
There is just one other thing to point out: If, at any point, they become antagonistic towards you, don't entertain them. Obviously the first thing to do is take a look at what you're saying and see if it prompts that kind of behavior. If it doesn't, however, then you are by no means obligated to entertain somebody who will be actively harmful towards your game.
These things should help you alleviate the tensions during gameplay caused by absent players. Hopefully this helps you come to a solution for this problem!