I have no experience with the gsheet nodes. But I have had a lot of experience with other nodes that interface with something outside the flow.
First impression, wow. Try not to take anything that follows as offensive. I really am trying to help. I'm looking at the flows and I'm seeing function after function after function. There's a lot of stuff to get lost on working with that. So my first question, is there a reason you can't combine some of the serial functions into one function? Also, is there a reason you have functions before debugs? Are you trying to purge insignificant information? There may be some stuff you're losing by doing that if so.
If one function does something and then another function manipulates that data from the first, you can put that data manipulation in the first and have one function. Depending on what you're joining, that can be a simple .concat() line in your function. Reacting to multiple inputs can be done the same way. There are several ways around having serial functions and nodes that are very simple and easy to implement. So that's my first curiosity.
Second, yes. I never have a lot of success with multiple outputs to the same source. I've made it a goal to always use a single output. If I have multiple inputs going to that output and I need to condition things (i.e. transmission timing and stuff), I'll institute a "gatekeeper" to make sure traffic is handled correctly. That way I avoid duplicate calls and traffic collisions.
Third, I see nodes in there to limit transmission rates. Also something I've never had good luck with. Essentially you're counting on everything working at normal speed without delays. Delays always happen and they tend to go outside your delay window. So I try to work on transaction feedback whenever possible. When one transaction finishes, I start the next rather than start one transaction, wait an expected period then start the next. I don't know how many transaction returns (also called callbacks) there are in these nodes, but that may help things.
Fourth, your error is an authorization error. I don't know if it's an error thrown in your gsheet nodes or somewhere else Node-Red related. Unfortunately, there's no node information in the error. When you mouse-over the error, what node is highlighted? That should be the one that is throwing the error. Is it your append node or a different one?
Is there a reason it has to work this way? I'm just trying to figure out the why of what you're doing. Having a subflow of nodes doesn't make a lot of sense to me when there's something that can simply be done in the main flow. It seems like you're doing a simple read/respond/process/append setup based on what you've shared. First glance makes it seem really overcomplicated.
Again, this is all first impression stuff. I really am trying to be helpful and not sound like I'm tearing code apart. My understanding is limited in this situation and what I do see doesn't match what I would expect to see in a similar circumstance. If I'm wrong about what I'm assuming, I'll gladly take correction. Just let me know.