Skip to content

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.FormResponse

Start here

Get this object first

Install a From form, On form submit trigger, then read event.response inside the function the trigger runs.

Code.gs
/** @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.FormResponse
Show example code
Code.gs
/** @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.ItemResponse
Show example code
Code.gs
/** @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.FormResponse
Show example code
Code.gs
/** @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

From signature data Google source
  • getEditResponseUrl(): string

getGradableItemResponses

From signature data Google source
  • getGradableItemResponses(): FormApp.ItemResponse[]

getGradableResponseForItem

From signature data Google source
  • getGradableResponseForItem(item: FormApp.Item): FormApp.ItemResponse

getId

From signature data Google source
  • getId(): string | null

getItemResponses

From signature data Google source
  • getItemResponses(): FormApp.ItemResponse[]

getRespondentEmail

From signature data Google source
  • getRespondentEmail(): string

getResponseForItem

From signature data Google source
  • getResponseForItem(item: FormApp.Item): FormApp.ItemResponse | null

getTimestamp

From signature data Google source
  • getTimestamp(): Date

submit

From signature data Google source
  • submit(): FormApp.FormResponse

toPrefilledUrl

From signature data Google source
  • toPrefilledUrl(): string

withItemGrade

From signature data Google source
  • withItemGrade(gradedResponse: FormApp.ItemResponse): FormApp.FormResponse

withItemResponse

From signature data Google source
  • 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