2017-09-23 1 views
0

Egal, was ich mache, es gibt ein undefiniertes Objekt für "Logger.log (medItemResponse);" zurück.Google Apps Script: Grid Item abrufen Antwort gibt Undefined zurück

function updateMedicationNumbers() { 
    var lastFormResponse = getLastForm(); 
    getMedItemResponse(lastFormResponse); 
} 

function getLastForm(){ 
    var form = FormApp.getActiveForm(); 
    var formResponseArray = form.getResponses(); 
    var lastFormResponse = formResponseArray[formResponseArray.length-1]; 
    Logger.log(lastFormResponse); 
    return lastFormResponse; 

} 

function getMedItemResponse(lastFormResponse){ 
    var responseItems = lastFormResponse.getItemResponses(); 
    Logger.log(responseItems); 
    for (var i = 0; i < responseItems.length; i++){ 
     var responseItem = responseItems[i].getItem(); 
     if(responseItem.getTitle() == "Individual Meds"){ 
     var medItemResponse = responseItems[i].getResponse(); 
     } 
    } 
    Logger.log(medItemResponse); 
    } 

Hier ist die Dokumentation für .getResponse();

Ruft die Antwort des Befragten ab. Bei den meisten Arten von Frageelementen gibt dies einen String zurück. Für CheckboxItem-Fragen wird ein Array String [] zurückgegeben, das die Auswahlmöglichkeiten des Antwortgebers enthält. Die Reihenfolge der Zeichenfolgen im Array kann variieren. Für GridItem-Fragen gibt dies ein Array String [] zurück, in dem die Antwort am Index n der Frage an Zeile n + 1 im Raster entspricht. Wenn ein Befragter eine Frage im Raster nicht beantwortet hat, wird diese Antwort als "" zurückgegeben. Für CheckboxGridItem-Fragen gibt dies ein String [] [] -Array zurück, in dem die Antworten im Zeilenindex n der Frage in Zeile n + 1 im Kontrollkästchen grid entsprechen. Wenn ein Befragter eine Frage im Raster nicht beantwortet hat, wird diese Antwort als "" zurückgegeben.

Return

Object - ein String oder String [] oder String [] [] von Antworten auf die Frage Artikel

+0

Sie sollten innerhalb des Blocks eine 'break' in der Schleife, die für truthy' responseItem.getTitle läuft() == "Individual Meds" 'Es sollte sein:' if (responseItem.getTitle() == "Individuelle Meds") {var medItemResponse = responseItems [i] .getResponse(); break; } 'Wenn es nur einen Titel mit dem Namen" Individual Meds "gibt, gibt es keinen Grund weiter zu loopen, sobald das Match gefunden wurde. Fügen Sie eine 'Logger.log()' Anweisung in Ihren Code ein, die das Ergebnis des Truthy-Tests anzeigt. 'Logger.log (responseItem.getItem(). GetTitle() ==" Einzelne Meds ")' Sie sollten einen echten Ausdruck in den Logs sehen. Wenn nicht - keine Übereinstimmung gefunden. –

Antwort

0

Ich habe versucht, diese mit einer anderen Form, und es scheint zu funktionieren, aber ich bin nicht sicher, wenn es für dich funktioniert.

function getMedItemResponse(lastFormResponse){ 
    var responseItems = lastFormResponse.getItemResponses(); 
    Logger.log(responseItems); 
    for (var i = 0; i < responseItems.length; i++){ 
     var responseItem = responseItems[i]; 
     if(responseItem.getItem().getTitle() == "Individual Meds"){ 
     var medItemResponse = responseItems[i].getResponse(); 
     } 
    } 
    Logger.log(medItemResponse); 
    } 
Verwandte Themen