Reputation: 13
I want to send some google form data to outside API using UrlFetchApp.fetch when the google form is submitted but there is no form data in event data.
My script is here
function onFormSubmit(e) {
Logger.log(JSON.stringfy(e))
UrlFetchApp.fetch('https://api.server.com/result', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
payload: JSON.stringify({
answer1 : e.response.getItemResponses()[0].getResponse(),
answer2 : e.response.getItemResponses()[1].getResponse()
}),
})
}
I add trigger to google form
When google form is submitted, the function, onFormSubmit is called correctly but e has no response data like below log.
{"authMode":"FULL","response":{},"source":{},"triggerUid":"16459009"}
My question is
Why the event of onFormSubmit doesn't have any response data(=form data)?
Is there something to do more (like install other trigger?)
What should I do for correct action?
Upvotes: 1
Views: 1080
Reputation: 8102
You have an onFormSubmit
trigger for a script container-bound to a Google Form and you think that your log shows that the script is not collecting any form response data.
Your log results do NOT mean that no response data was collected.
The Event Objects response
contains a FormResponse
object, representing the user's response to the form as a whole.
To see your form response data, add the following after your "stringify" line:
let responses = e.response.getItemResponses();
for (i = 0; i<responses.length ; i++){
Logger.log(responses[i].getResponse())
}
UrlFetchApp.fetch - PayLoad
Suggested modification
From
payload: JSON.stringify({
answer1 : e.response.getItemResponses()[0].getResponse(),
answer2 : e.response.getItemResponses()[1].getResponse()
}),
To
payload: answer1 : e.response.getItemResponses()[0].getResponse(),
answer2 : e.response.getItemResponses()[1].getResponse()
,
Upvotes: 1