Google 表格脚本,无法删除表单目标



我构建了一个创建了大量表单的脚本。其中一些表格是重复的,我正试图删除这些表格及其相应的目的地表格。这是我得到的:

function removeDups(){
var ss, maint, sheets, form, destsheet, d1, d2, s1,s2
ss = SpreadsheetApp.getActive();
maint = ss.getSheetByName("Maintenance");
destsheet = SpreadsheetApp.openByUrl(maint.getRange("B1").getValue());
sheets = destsheet.getSheets();
for (var i = 0; i<sheets.length; i++){
s1 = sheets[i]
s2 = sheets[i+1];
d1 = s1.getRange("C1").getValue();
d2 = s2.getRange("C1").getValue();
if (d1.toString() == d2.toString()){
form = FormApp.openByUrl(s2.getFormUrl())
form.removeDestination();
destsheet.deleteSheet(s2);
}
}
}

它抛出一个";无法删除具有链接表单的表单";每次都会出错。

我试过以下几种:

  1. 删除了deleteSheet行,目的是让脚本返回并删除没有链接表单的工作表。在这种情况下,脚本完成,但表单保持链接
  2. 我已尝试将重复表单的目的地更改为另一个电子表格。在这种情况下,表单最终链接到两个工作表,并且我仍然无法删除原始链接的工作表

我这里缺少什么?

编辑:当我打开表单本身时,它不再链接到电子表格。因此,脚本删除了表单目的地,但这并没有反映在电子表格中。

destsheet.deleteSheet(s2);之前添加SpreadsheetApp.flush()

相关

  • 为什么要使用SpreadsheetApp.flush((

感谢您的建议。我没有提到,但我之前尝试过SpreadsheetApp.flush((,但没有真正的改进。我认为问题是在一个电子表格文件中嵌入了太多公式的表格,这导致了这个问题和其他问题。我最终将表单响应划分为20(!(个独立的电子表格,并为每个电子表格安装了onSubmit触发器。我还删除了工作表中嵌入的公式,并让触发器运行脚本来完成所有工作。在这两者之间,现在一切都很顺利。

最新更新