Here's the good news.
Your question sheet loads okay, give or take some carriage returns.
I guess this is your button to ask the next question.
The test should be < , not <= , because if you add 1 at end of list you will get an index error.
Otherwise, it looks okay, aside from introducing an extra global variable for what should have been calculated (length of list) right here.
This button asks for the previous question in the list?
Same boundary error, where you will fall off the beginning and ask for nonexistent index 0.
Use > instead of >=
The next two blocks are pretty bad.
Their order of operation is wrong, and they have fouled up data flow.
So when your spoken answer is received as text, you set Web1 to work reloading the question table? See the same URL as in Screen1.Initialize?
But you already have the question table in that global list variable.
Instead you should be trying to submit the text to your Google Form.
Note where the answer is going: Label3.Text
Here's your Answer button (I think):
This is totally backwards.
All you should be doing here is just the first 2 blocks, announcing your prompt and asking for text.
The form submission should be in the After Getting Speech Response block, up above, instead of that table grab.
I also question why you are sending that piece of text in your big button, which you never change, 10 times? Maybe Label3.Text would make more sense?
Regarding the form, which I am not an expert on, that ?& sequence needs another look by an expert.
I also repeat, use a separate Web2 component for your form submission to avoid getting your data flow crossed. Call it something sensible, like WebForm.