2016-11-08 3 views
1

Я работаю над скриптом, чтобы получить последнее представление формы. Я нашел пример ванили онлайн ...Получить последний ответ от формы Google

function onSubmit() { 
    // Open a form by ID and log the responses to each question. 
var form = FormApp.openById('1G3e4FTYlsJUl5mKX2v1pYWauG1FO5IUPDIOI6P4hUoA'); 
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()); 
    } 
} 
} 

Я изменил это ...

function onSubmit() { 
    // Open a form by ID and log the responses to each question. 
var form = FormApp.openById('1G3e4FTYlsJUl5mKX2v1pYWauG1FO5IUPDIOI6P4hUoA'); 
var formResponses = form.getResponses(); 

var last_response = formResponses[formResponses.length - 1]; 
    Logger.log(last_response.val) 
} 

При просмотре журнала для сценария выше я получаю undefined. Как вывести значение last_response?

ответ

1

Сначала вы должны использовать метод getItemResponses(). Метод getItemResponses() получает все «Элементы» одного представления формы. Большинство вопросов - это вопросы. Но есть пункты, которые не являются вопросами, например PAGE_BREAK. Поэтому вам нужно исключить такие вещи, как разрывы страниц. Я назвал элементы в этом разделе «Вопросы», но «Элементы» - это не всегда вопросы.

function getArrayOfOneSubmissionsAnswers() { 
    var allQuestions,i,itemType,L,thisAnswer,thisQuestion,thisSubmissionsAnswers; 
    //Define all variables without assigning a value - value at this point 
    //is undefined 

    allQuestions = FormApp.openById('your_Form_ID').getResponses()[0].getItemResponses(); 

    L = allQuestions.length;//How many questions are there in the Form 
    thisSubmissionsAnswers = [];//Create an empty array for answers 

    for (i=0;i<L;i++) {//Loop through all the questions in this Form submission 
    thisQuestion = allQuestions[i];//Get this question 

    itemType = thisQuestion.getItem().getType(); 

    if (itemType === FormApp.ItemType.PAGE_BREAK) { 
     continue;//keep looping 
    }; 

    thisAnswer = thisQuestion.getResponse();//Get the answer 
    Logger.log(i + " - " + thisAnswer); 

    thisSubmissionsAnswers.push(thisAnswer);//add answer to the array 
    }; 

    Logger.log("thisSubmissionsAnswers: " + thisSubmissionsAnswers); 

    return thisSubmissionsAnswers; 
}; 
0

Только для потомков здесь немного измененная версия сценария Сэнди выше, который дает мне последний ответ, отправленный из формы.

function getArrayOfLastSubmissionsAnswers() { 
    var allQuestions,i,itemType,L,thisAnswer,thisQuestion,thisSubmissionsAnswers,number_of_submissions; 
    //Define all variables without assigning a value - value at this point 
    //is undefined 

    number_of_submissions = FormApp.openById('your_Form_ID').getResponses().length; 
    allQuestions = FormApp.openById('your_Form_ID').getResponses()[number_of_submissions - 1].getItemResponses(); 

    L = allQuestions.length;//How many questions are there in the Form 
    thisSubmissionsAnswers = [];//Create an empty array for answers 

    for (i=0;i<L;i++) {//Loop through all the questions in this Form submission 
    thisQuestion = allQuestions[i];//Get this question 

    itemType = thisQuestion.getItem().getType(); 

    if (itemType === FormApp.ItemType.PAGE_BREAK) { 
     continue;//keep looping 
    }; 

    thisAnswer = thisQuestion.getResponse();//Get the answer 
    Logger.log(i + " - " + thisAnswer); 

    thisSubmissionsAnswers.push(thisAnswer);//add answer to the array 
    }; 

    Logger.log("thisSubmissionsAnswers: " + thisSubmissionsAnswers); 

    return thisSubmissionsAnswers; 
}; 
Смежные вопросы