Yes, but note that an api script can't directly call a macro (so you can't just perform a sendChat() with the text "Macro2" and expect results). You could in theory have the script grab the contents of Macro2 and regurgitate it to the chat with something like this: let thisMacro = findObjs({ type: 'macro', name: 'Macro2' })[0];
sendChat('scriptName', thisMacro.get('action')); However, also note that if there was stuff in Macro2 like @{selected|...} or @{target|...} you'd have to handle it in some way (possibly using one of Tim's metascripts like SelectManager? I dunno). If that applies here, another option might be to avoid the scripting entirely and structure your parent macro to call Macro1 then whisper a chat menu button that references Macro2. #Macro1 /w gm [buttonText](!
#Macro2) The time it would take you to fire Macro1 and navigate your mouse cursor to the chat window to click the button would be close to the 1 sec delay you were trying to get with the setTimeout.