Google 表单脚本 ItemResponse getScore() returns 空
Google Forms Script ItemResponse getScore() returns null
不确定它是否是错误,但是 getScore()
方法 (https://developers.google.com/apps-script/reference/forms/item-response#getscore) 对我来说总是 returns null
,虽然它是这样说的应该 return 一个 double
.
表格是一个测验,确实接受答案,分数设置为2
所有问题,分数 是 被登记在 Google 表格的回复中。
// Code.gs
function onOpen (e) {
setOnSubmitTrigger();
}
function setOnSubmitTrigger () {
var form = FormApp.getActiveForm();
ScriptApp.newTrigger(respondToFormSubmit)
.forForm(form)
.onFormSubmit()
.create();
}
function respondToFormSubmit (e) {
var form = FormApp.getActiveForm();
var allResponses = form.getResponses();
var response = allResponses[allResponses.length - 1];
var itemResponses = response.getItemResponses();
console.log(form.isQuiz()); // yields true
for (var i in itemResponses) {
var itemResponse = itemResponses[i];
Logger.log(itemResponse.getScore()); // (!) always yields null
}
}
以下问题中提到了该主题,但它们既没有专门针对该问题,也没有提供解决方案:
- How to check if a response is correct?
- Google forms get score of respondent's answer
不确定 Google 脚本参考中是否记录了这一点,但这里有一个解决方案:
// Code.gs
// ...
function respondToFormSubmit (e) {
// ...
var itemResponses =
response.getGradableItemResponses(); // NOT .getItemResponses()
console.log(form.isQuiz()); // yields true
for (var i in itemResponses) {
var itemResponse = itemResponses[i];
Logger.log(itemResponse.getScore()); // yields number!
}
}
不确定它是否是错误,但是 getScore()
方法 (https://developers.google.com/apps-script/reference/forms/item-response#getscore) 对我来说总是 returns null
,虽然它是这样说的应该 return 一个 double
.
表格是一个测验,确实接受答案,分数设置为2
所有问题,分数 是 被登记在 Google 表格的回复中。
// Code.gs
function onOpen (e) {
setOnSubmitTrigger();
}
function setOnSubmitTrigger () {
var form = FormApp.getActiveForm();
ScriptApp.newTrigger(respondToFormSubmit)
.forForm(form)
.onFormSubmit()
.create();
}
function respondToFormSubmit (e) {
var form = FormApp.getActiveForm();
var allResponses = form.getResponses();
var response = allResponses[allResponses.length - 1];
var itemResponses = response.getItemResponses();
console.log(form.isQuiz()); // yields true
for (var i in itemResponses) {
var itemResponse = itemResponses[i];
Logger.log(itemResponse.getScore()); // (!) always yields null
}
}
以下问题中提到了该主题,但它们既没有专门针对该问题,也没有提供解决方案:
- How to check if a response is correct?
- Google forms get score of respondent's answer
不确定 Google 脚本参考中是否记录了这一点,但这里有一个解决方案:
// Code.gs
// ...
function respondToFormSubmit (e) {
// ...
var itemResponses =
response.getGradableItemResponses(); // NOT .getItemResponses()
console.log(form.isQuiz()); // yields true
for (var i in itemResponses) {
var itemResponse = itemResponses[i];
Logger.log(itemResponse.getScore()); // yields number!
}
}