2014-03-06 19 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