Class FormResponse

表单响应

对表单整体的响应。FormResponse 有三种用途:访问受访者提交的答案(请参阅 getItemResponses())、以编程方式提交表单的回复(请参阅 withItemResponse(response)submit())以及使用提供的答案预先填充表单的网址。可以通过 Form 创建或访问 FormResponse

// Open a form by ID and log the responses to each question.
var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
  var formResponse = formResponses[i];
  var itemResponses = formResponse.getItemResponses();
  for (var j = 0; j < itemResponses.length; j++) {
    var itemResponse = itemResponses[j];
    Logger.log('Response #%s to the question "%s" was "%s"',
        (i + 1).toString(),
        itemResponse.getItem().getTitle(),
        itemResponse.getResponse());
  }
}

方法

方法返回类型简介
getEditResponseUrl()String生成一个网址,该网址可用于修改已提交的回复。
getGradableItemResponses()ItemResponse[]按表单中显示的项的顺序获取表单响应中的所有项响应。
getGradableResponseForItem(item)ItemResponse获取表单项对给定项的响应。
getId()String获取表单回复的 ID。
getItemResponses()ItemResponse[]按表单中显示的项的顺序获取表单响应中的所有项响应。
getRespondentEmail()String获取提交回复的人员的电子邮件地址(如果已启用 Form.setCollectEmail(collect) 设置)。
getResponseForItem(item)ItemResponse获取此表单中针对指定商品的商品回复。
getTimestamp()Date获取表单回复提交的时间戳。
submit()FormResponse提交响应。
toPrefilledUrl()String为表单生成网址,用于根据此表单回复中的答案预先填充答案。
withItemGrade(gradedResponse)FormResponse将指定的项目回复的成绩添加到表单回复中。
withItemResponse(response)FormResponse向表单响应添加指定的 item 响应。

详细文档

getEditResponseUrl()

生成一个网址,该网址可用于修改已提交的回复。如果 Form.setAllowResponseEdits(enabled) 设置处于停用状态,该链接会转到一个页面,说明修改表单回复已停用。访问该链接的任何人都可以修改回复,但他们需要具有表单访问权限的帐号(如果启用了 Form.setRequireLogin(requireLogin) 设置)。如果启用了 Form.setCollectEmail(collect) 设置,表单会记录编辑回复的用户的电子邮件地址,而不是原始回复者的电子邮件地址。

对于脚本已创建但尚未提交的表单响应,此方法会返回 null

返回

String - 用于更改已提交回复的网址

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

getGradableItemResponses()

按表单中显示的项的顺序获取表单响应中的所有项响应。此方法的工作方式与 getItemResponses() 类似,但为了对缺失的答案进行评分,如果对应的 Item 可以评分(即具有分值),它仍会返回 ItemResponse,即使没有实际响应也是如此。不过,如果 Item 不可升级,则此方法会从所返回的数组中排除该项。

返回

ItemResponse[] - 针对表单中的每个问题项的回复者数组,回复者可以收到分数。

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

getGradableResponseForItem(item)

获取表单项对给定项的响应。此方法的工作方式与 getResponseForItem(item) 类似,但为了允许对缺失的答案进行评分,如果相应的 Item 可以评分(即具有分值),它仍会返回 ItemResponse,即使没有实际响应也是如此。不过,如果 Item 不可升级,此方法会返回 null

参数

名称类型说明
itemItem

返回

ItemResponse - 给定项的响应,或者 null(如果不存在且该项不计分)


getId()

获取表单回复的 ID。如果表单回复尚未提交,此方法会返回 null

返回

String - 表单回复的 ID;如果表单回复尚未提交,则为 null

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

getItemResponses()

按表单中显示的项的顺序获取表单响应中的所有项响应。如果表单响应不包含给定 TextItemDateItemTimeItemParagraphTextItem 的响应,则针对该项返回的 ItemResponse 将具有一个空字符串作为响应。如果表单响应省略了对任何其他项类型的响应,则此方法会从所返回的数组中排除该项。

返回

ItemResponse[] - 针对受访者提供了答案的表单中的每个问题项的响应数组

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

getRespondentEmail()

获取提交回复的人员的电子邮件地址(如果已启用 Form.setCollectEmail(collect) 设置)。

对于脚本已创建但尚未提交的表单响应,此方法会返回 null

返回

String - 提交此回复的人员的电子邮件地址(如果有),或者 null(如果脚本创建了此响应但尚未提交)

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

getResponseForItem(item)

获取此表单中针对指定商品的商品回复。

参数

名称类型说明
itemItem

返回

ItemResponse - 给定项的响应;如果不存在,则返回 null


getTimestamp()

获取表单回复提交内容的时间戳。

对于脚本已创建但尚未提交的表单响应,此方法会返回 null

返回

Date - 此响应的提交时间戳;如果脚本创建了此响应但尚未提交,则为 null

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

submit()

提交响应。如果已提交响应,则会抛出脚本异常。

返回

FormResponse - 新创建的响应保存到表单的响应存储区

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

toPrefilledUrl()

为表单生成网址,用于根据此表单回复中的答案预先填充答案。

返回

String - 包含预填答案的表单的网址

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

withItemGrade(gradedResponse)

将指定的项目回复的成绩添加到表单回复中。此方法仅适用于已提交的表单回复,并且只会影响存储的成绩。此方法也只会更新商品响应的评分;不会影响实际响应(因为已经提交响应)。如果对同一内容多次调用此方法,则仅保留上次成绩。如果 ItemResponse 不包含任何成绩,则此方法将移除相应商品的成绩。

// Programmatically award partial credit for a given response
var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var formResponses = form.getResponses();
var formItems = form.getItems();
for (var i = 0; i < formResponses.length; i++) {
  var formResponse = formResponses[i];
  for (var j = 0; j < formItems.length; j++) {
    var item = formItems[j];
    var points = item.asMultipleChoiceItem().getPoints();
    var itemResponse = formResponse.getGradableResponseForItem(item);
    Logger.log('Award half credit for answers containing the word "Kennedy"');
    var answer = itemResponse.getResponse();
    if (answer != null && answer.includes('Kennedy')) {
      itemResponse.setScore(points / 2);
      formResponse.withItemGrade(itemResponse);
    }
  }
}
form.submitGrades(formResponses);

参数

名称类型说明
gradedResponseItemResponse

返回

FormResponse - 此 FormResponse,用于串联

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

withItemResponse(response)

向表单响应添加指定的 item 响应。此方法仅适用于脚本已创建但尚未提交的表单响应,而不会影响存储的响应。如果针对同一项多次调用此方法,则仅保留最后一项响应。

参数

名称类型说明
responseItemResponse

返回

FormResponse - 此 FormResponse,用于串联

授权

使用此方法的脚本需要通过以下一个或多个范围进行授权:

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms