This can be made to work with some specifications on our functions and a minor tweek to the results from EmbedCode
First, the WolframCloud APIFunction must be made to work with a list of companies rather than a single company.
co = CloudDeploy[APIFunction["comp" -> DelimitedSequence["Company", ","], FinancialData /@ #comp &, "JSON"], Permissions -> "Public"]
Note that DelimitedSequence tells the function to expect multiple values. Also, the output format is now specified as JSON, which works nicely with google spreadsheet.
Now create the embedded code as before
EmbedCode[co, "GoogleDocs", ExternalFunctionName -> "WCFinance", ExternalTypeSignature -> {{"String"}, "Array"}]
I have named the function WCFinance. The javascript types for the input and output for my api are now specified.
I assume that we'll want to call our function using reference cells (e.g., =WCFinance(A2:A8)). Since my APIFunction is expecting a string for input, I need to modify the embedded code to convert the cell inputs to a string. This trivial to do. Just call join() on the input variable "comp". The modified line of code look like this:
_payload["comp"] = comp.join();
Now I can call the function with multiple inputs, and the output is automatically written to the correct cells.