2014-03-06 2 views
0

양식 스크립트를 작성 중이며 각 질문에 대한 추가 설정을 저장해야합니다. 각 질문에 대한 설정을 저장하기 위해 scriptDB를 사용하려고하므로 스프레드 시트를 만들지 마십시오. (더 좋은 방법이 있다면 알려주십시오.)Google 서식에서 scriptDB로 질문을 보내고 싶습니다.

지금 당장은 새로운 또는 삭제 된 질문으로 데이터베이스를 업데이트하는 synchronizeDB() 함수를 만들려고합니다. 각 질문에 대해 저장 한 추가 데이터가 삭제되므로 삭제 및 다시로드 할 수 없습니다.

-bj

답변

0

나는 그것을 알아 냈 :

function snycFormToDb(){ 

    var formQs = getFormQarray(); 
    addDBQuestions(formQs); 
    removeDBQuestions(formQs); 
// showAll(); 

} 


// Save Questions To DB 
function getFormQarray(){ 
var form = FormApp.getActiveForm(); 
var items = form.getItems(); 
var itemL = items.length-1; 
var allQuestions = []; 

    for (var i=0; i <= itemL; ++i) { 
    var qID = items[i].getId(); 
    var qType = items[i].getType()+ ""; 
    var qTitle = items[i].getTitle(); 
    var qIndex= items[i].getIndex(); 
    var qHelpTxt = items[i].getHelpText(); 

    var entry = [qID,qIndex,qTitle,qType,qHelpTxt]; 
    allQuestions.push(entry); 

    } // end For  

    return(allQuestions); 
}; // end function questionsDB() 




// Add questions to DB 
function addDBQuestions(formQs) { 

    var dbQuestions = []; 
    var results = db.query({}); 
    while (results.hasNext()) { 
    var current = results.next(); 
    dbQuestions.push(current); 
    } 

    var dbQuestionsL = dbQuestions.length-1; 
    var formQsL = formQs.length-1; 
    var addToDb = []; 

for (var j=0; j <= formQsL; ++j) { 
    var notPresent = false; 
    for (var k=0; k <= dbQuestionsL; ++k) { 

     var dbID = dbQuestions[k]['qID']; 
     var frmID = formQs[j][0]; 
     if (dbID == frmID){ 
     notPresent = true;  
     } 
    } 
    if (notPresent == false) { 
    //var entry = [qID,qIndex,qTitle,qType,qHelpTxt]; 
    //var format = {type: formQs[j][2],title: formQs[j][1],qID: formQs[j][0]}; 
    var format = {qID: formQs[j][0],qIndex: formQs[j][1],qTitle: formQs[j][2],qType: formQs[j][3],qHelpTxt: formQs[j][4]}; 
    addToDb.push(format); 
    } 
} // end for formQsL 
    db.saveBatch(addToDb, false); 
    } //end my function 



// Remove Q's from Database 
function removeDBQuestions(formQs) { 

var formQsL = formQs.length-1; 

    //get qID results from Database 
    var results = db.query({}); 
    while (results.hasNext()) { 
    var current = results.next(); 
    //var recordID = results.getId(); 
    var deleteCurrent = "true"; 

    // Delete missing questions 
    for (var j=0; j <= formQsL; ++j) { 
     var c1 = current.qID; 
     var c2 = formQs[j][0]; 
     if (current.qID == formQs[j][0]){ deleteCurrent = "false";} 
    } 

    if (deleteCurrent == "true"){ 
     db.remove(current); 
    } 
    } 

} //end my function 
관련 문제