Object reference
Form response
A FormResponse contains the answers sent in one Google Form submission. A form-bound submit trigger passes it to your function as event.response, where getItemResponses() returns the submitted item responses.
FormApp.FormResponseStart here
Get this object first
Install a From form, On form submit trigger, then read event.response inside the function the trigger runs.
/** @param {Events.FormsOnFormSubmit} event */
function logSubmittedResponse(event) {
const response = event.response;
Logger.log(response.getTimestamp());
} Then use it
Common actions
Choose an action, then open its example only when you need the code.
Count submitted answers
This records only the number of answered items. Optional text, paragraph-text, date, and time items with an empty response are excluded. It does not copy questions or answers into the execution log.
FormApp.FormResponseShow example code
/** @param {Events.FormsOnFormSubmit} event */
function logSubmittedAnswerCount(event) {
const answerCount = event.response
.getItemResponses()
.filter((itemResponse) => itemResponse.getResponse() !== '')
.length;
Logger.log('Answer count: ' + answerCount);
} List the titles of answered questions
This filters out empty item responses and reads the question title from each answered ItemResponse without logging respondent answers.
FormApp.FormResponseFormApp.ItemResponseShow example code
/** @param {Events.FormsOnFormSubmit} event */
function logAnsweredItemTitles(event) {
const titles = event.response
.getItemResponses()
.filter((itemResponse) => itemResponse.getResponse() !== '')
.map((itemResponse) => itemResponse.getItem().getTitle());
Logger.log('Questions answered: ' + titles.join(', '));
} Log the response ID and edit URL availability
This logs the unique response ID from getId() and checks whether getEditResponseUrl() returned a link without logging respondent answers.
FormApp.FormResponseShow example code
/** @param {Events.FormsOnFormSubmit} event */
function logResponseIdAndEditLinkStatus(event) {
const response = event.response;
const hasEditUrl = Boolean(response.getEditResponseUrl());
Logger.log('Response ID: ' + response.getId() + ' (edit link: ' + hasEditUrl + ')');
} Technical reference
Exact names and signatures
Generated runtime and signature facts stay separate from the beginner actions above. Open method details only when you need them.
At a glance
- Service
- FormApp
- Reference symbol
FormApp.FormResponse- Object
FormResponse- Runtime
- From signature data
Methods and signatures
Browse 12 methods
getEditResponseUrl
- getEditResponseUrl(): string
getGradableItemResponses
- getGradableItemResponses(): FormApp.ItemResponse[]
getGradableResponseForItem
- getGradableResponseForItem(item: FormApp.Item): FormApp.ItemResponse
getId
- getId(): string | null
getItemResponses
- getItemResponses(): FormApp.ItemResponse[]
getRespondentEmail
- getRespondentEmail(): string
getResponseForItem
- getResponseForItem(item: FormApp.Item): FormApp.ItemResponse | null
getTimestamp
- getTimestamp(): Date
submit
- submit(): FormApp.FormResponse
toPrefilledUrl
- toPrefilledUrl(): string
withItemGrade
- withItemGrade(gradedResponse: FormApp.ItemResponse): FormApp.FormResponse
withItemResponse
- withItemResponse(itemResponse: FormApp.ItemResponse): FormApp.FormResponse
Need the whole workflow?
Return to a task guide
Task guides cover setup, permissions, expected results, and troubleshooting as well as object methods.
Browse Google Forms tasks