Javascript 谷歌脚本-表单-问题删除分页符/节-“;无效的数据更新表“;

Javascript 谷歌脚本-表单-问题删除分页符/节-“;无效的数据更新表“;,javascript,forms,google-apps-script,google-forms,Javascript,Forms,Google Apps Script,Google Forms,我在尝试迭代表单中的项目并删除它们以为新的部分/问题让路时,遇到了以下代码的问题。但是,有时会出现以下错误“无效数据更新表单”。我已经解决了很多次了,但它一直在恢复。我目前的解决办法是将节标题设置为“”,这样可以删除该节。以前,我直到今天才需要这样做 我的问题:迭代表单中的项并从一个起点删除它们而不遇到此错误的最佳方法是什么 参考资料: f=当前活动窗体 f_items=数组中窗体的所有项 function clearForm() { var clearQ = find(f_items,

我在尝试迭代表单中的项目并删除它们以为新的部分/问题让路时,遇到了以下代码的问题。但是,有时会出现以下错误“无效数据更新表单”。我已经解决了很多次了,但它一直在恢复。我目前的解决办法是将节标题设置为“”,这样可以删除该节。以前,我直到今天才需要这样做

我的问题:迭代表单中的项并从一个起点删除它们而不遇到此错误的最佳方法是什么

参考资料:
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;
}
函数clearForm()
{
var clearQ=查找(f_项目,“选择约会日期/时间”)+1;
var f_i_len=f.getItems().length-1;
var-clear=clearQ;
while(clear=clearQ)
{
var item=f.getItems()[clear];
Logger.log(item.getTitle()+“|”+item.getType());
Logger.getLog();
if(item.getType()=“分页”)
{item.asPageBreakItem().setTitle(“”;}
f、 删除项目(清除);
f_i_len=f.getItems().length-1;
clear++;
}
}
函数查找(src,name)
{
var s_len=src.length;
对于(var iter=0;iter
我发现了这个问题!这是循环末尾的clear++代码。随着每次迭代中项目的数量不断减少,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;
    }
}
函数clearForm()
{
var clearQ=查找(f_项目,“选择约会日期”)+1;
var f_i_len=f.getItems().length-1;
var-clear=clearQ;
while(clear=clearQ)
{
var item=f.getItems()[clear];
if(item.getType()=“分页”)
{item.asPageBreakItem().setTitle(“”;}
f、 删除项(清除);/}
f_i_len=f.getItems().length-1;
}
}

我遇到的问题是,我试图删除的PageBreakItem是表单前面条件答案的目标

下面是我的代码,我需要删除某个项目之后的所有内容,该项目链接到我需要删除的部分,因此我能够使用while循环向后迭代

function getParentNameItem_(form, form_items){
  //finds the item with conditional navigation to what you want to delete
  var parent_name_item = find_(form_items, "Your Name");

  parent_name_item = parent_name_item.asListItem();

  //clears all choices which breaks the navigation dependency
  //this frees up the items to be deleted
  parent_name_item.setChoices([parent_name_item.createChoice("")]);

  var size = form_items.length - 1;

  //iterates from the end back to the last question I want to keep
  while(form_items[size].getTitle() != "Your Name"){

    //this can take either the item itself or the index as I've done
    form.deleteItem(size);

    size--;
  }

  /*I rebuild the choices for parent_name_item
  later based on information from a spreadsheet 
  which I also use to determine the content of 
  the PageBreakItems I just deleted*/

  return parent_name_item;
}

只是一个建议:如果你需要变量的引用,你可以考虑使用更多的描述性变量名。我把它们添加到描述中作为参考,因为它们不包含在代码片段中,你可以通过点击大的绿色复选标记来将你自己的问题标记为正确答案。这样,人们就会看到这个问题的答案是正确的。当人们在寻找答案和需要回答的问题时,它会有所帮助。是的,是的——我还必须删除导航依赖项。我继续并设置了我所有的goToPage也继续(尽管没有检查它是否在没有它的情况下工作)。这是一个救命恩人…从错误消息中找不到好的方向,我想花了很长时间才弄明白这一点。谢谢你把这个放在这里,非常感谢。调试是多么痛苦啊!