2017-03-01 45 views
0

我在嘗試遍歷表單中的項目並刪除它們以爲新部分創建方法時遇到以下代碼問題/的問題。但是,我有時會收到以下錯誤「無效的數據更新表單」。我現在已經多次解決了這個問題,但它一直在恢復。我目前的解決方法是將部分標題設置爲「」,使其可以刪除。以前,我直到今天都不需要這樣做。Google腳本 - 表單 - 刪除分頁符/部分的問題 - 「無效的數據更新表單」

我的問題:什麼是迭代通過表單中的項目並從起點刪除它們而不會遇到此錯誤的最佳方法?

參考:
F =當前活動窗體
f_items =所有形式的項目在數組中

function clearForm() 
{ 
    var clearQ = find(f_items, "Select Appointment Date/Time")+1; 
    var f_i_len = f.getItems().length-1; 
    var clear = clearQ; 
    while(clear <= f_i_len && clear >= clearQ) 
    { 
     var item = f.getItems()[clear]; 
     Logger.log(item.getTitle() + " | " + item.getType()); 
     Logger.getLog(); 
     if(item.getType() == "PAGE_BREAK") 
     { item.asPageBreakItem().setTitle(""); } 
     f.deleteItem(clear); 
     f_i_len = f.getItems().length-1; 
     clear++; 
    } 
} 

function find(src, name) 
{ 
    var s_len = src.length; 
    for(var iter = 0; iter < s_len; iter++) 
    { 
     var s = src[iter].getTitle(); 
     if(s == name) 
     { return iter; } 
    } 
    return -1; 
} 
+0

只是一個建議:如果您需要變量的引用,可以考慮使用更多的描述性變量名稱。 –

+0

我將它們添加到描述中作爲參考,因爲它們未包含在代碼段 –

回答

1

我發現了這個問題!這是循環結束時的清楚的++。隨着每次迭代中的項目數量不斷減少,clear ++導致它跳過分頁符項目。以下是我完成的代碼:

function clearForm() 
{ 
    var clearQ = find(f_items, "Select Appointment Date")+1; 
    var f_i_len = f.getItems().length-1; 
    var clear = clearQ; 
    while(clear <= f_i_len && clear >= clearQ) 
    { 
     var item = f.getItems()[clear]; 
     if(item.getType() == "PAGE_BREAK") 
     { item.asPageBreakItem().setTitle(""); } 
     f.deleteItem(clear); //} 
     f_i_len = f.getItems().length-1; 
    } 
} 
+0

中您可以通過單擊綠色大勾選標記自己的問題爲正確答案。這樣,人們會看到這個問題得到了正確的回答。它有助於人們尋找答案並尋找問題來回答。 –

相關問題