You might want to keep things separate. Maybe remove the timetable from your code and create a json file with all the necessary information. Then import the json file at runtime and have NPCs read off of that. It should consist of the NPC's name or ID and all the traits you want them to have.
Another solution that I can think of is to create export variables (namely variables that are visible in the editor) and fill them in with all the necessary information. For example, you could create slots for time of day, day of the week, activity, place etc. Then the main script of your game will be checking for those variables iteratively through a list of all NPCs and sort out where and when they need to be as well as what they should be doing.
Finally, you could create a single string variable (let's name it a state variable) for all NPCs that can be broken down into separate indicators, kind of like a hash function. For example, the string value WE1421PLCFRM could be interpreted as Wednesday, 14:00-21:00 at the Palace farming. Your code then reads all the NPCs' state variables and sets their state accordingly.
In any case, the key thing to remember is that your code becomes verbose if you have to include every single detail. What is more, rewriting the same code for all of your NPCs sure is wasteful. Keep NPCs in a list or group --> iterate through said list/group --> check attributes once for each item in list--> have main script regulate the game.
As a side note, you could even experiment with putting NPCs in lists/groups based on their common attributes. As far as I know, a single object can be part of several groups at the same time, so why not assign your NPCs in different groups based on where you want them?