2014-01-28 2 views
1

트리거가 작동하고 양식에 항목을 추가 할 수 있습니다. 그러나 어떤 식 으로든 항목의 선택을 변경하려고하면 .setChoices 줄에서 "양식을 편집하지 못했습니다."라는 오류가 나타납니다.양식 제출 후 Google 양식을 수정하려면 어떻게해야합니까? 양식을 수정하지 못했습니다. "라는 메시지가 나타납니다.

var form = FormApp.openById("<your form id>"); 
var mci = form.getItems(FormApp.ItemType.MULTIPLE_CHOICE); 
    var item = mci[0].asMultipleChoiceItem(); 
    Logger.log(item.getChoices()[0].getValue()); 
    item.setChoices([ 
    item.createChoice('Cats'), 
    item.createChoice('Dogs') 
]); 

객관식 항목이 존재하고 올바른 현재 선택 값을 기록 할 수 있는지 확인했습니다. 또한 같은 결과를

var choices = []; 
choices.push(item.createChoice('Cats')); 
choices.push(item.createChoice('Dogs')); 
item.setChoices(choices); 

item.setChoiceValues(['Cats', 'Dogs']); 

을 시도했습니다.

목표 : 응답자가 객관식 항목에 "다른"선택을하면 다음 응답자의 선택 목록에 해당 선택 사항을 추가하십시오.

답변

0

Google 설문지를 사용하여이를 수행 할 수 없다고 확신합니다.

Google App Script를 사용하여 나만의 사용자 인터페이스를 만들고 자신의 데이터 저장소와 상호 작용할 수 있습니다.

0

컨테이너 바인딩 스크립트가 아닌 독립적 인 스크립트를 사용하더라도 다음 코드를 사용할 수있었습니다. 이것은 트리거를 통하지 않고 수동으로 실행해야했습니다.

이와 같은 해킹은 쉽게 수정되고 트리거되어 매분마다 실행되며 알려진 스프레드 시트의 선택 사항을 알려진 양식에 추가합니다.

이 코드에는 ID가 변수 id에 삽입 된 선다형 개체가 포함 된 이전 양식이 필요합니다.

function AddNewChoiceBug() { 
    //choice variable needs input before running. 

    try{ 
    //get form via ID 
    var id = ''; //insert form ID here 
    var form = FormApp.openById(id); 
    Logger.log('Opening form: %s', id); 

    //get all multiple choice objects in given form 
    var MultChoice = form.getItems(FormApp.ItemType.MULTIPLE_CHOICE); 

    //input choice to all multiple choice objects 
    var choice = 'new choice'; //insert new choice here 
    Logger.log('New choice: %s', choice); 

    //Iterate through Multiple Choice objects in opening form 
    for(i=0; i< MultChoice.length; i++){ 

     Logger.log('Multiple Choice Question titled, %s', MultChoice[i].getTitle()); 

     var knownChoices = MultChoice[i].asMultipleChoiceItem().getChoices(); 
     //Iterate through Multiple Choice Options for each object 

     if(catchMultChoices(knownChoices, choice) != null){ 
     knownChoices.push(MultChoice[i].asMultipleChoiceItem().createChoice(choice)); 

//The following creates an error: 
     MultChoice[i].asMultipleChoiceItem().setChoices(knownChoices); 
     } 
    } 
    } 
    catch (e){ 
    Logger.log(e); 
    } 
} 

function catchMultChoices(kc, c) { 
    for(j=0; j< kc.length; j++){ 

    //catch choices already in MultChoice[i] 
    if(kc[j].getValue() === c){ 
     Logger.log(' choice %s already a choice', c); 
     return null; 
    } 
    } 

    //choice not in MultChoice[i]! 
    Logger.log(' choice %s not in question!', c); 
    return c; 
} 
관련 문제