我需要一直重複使用特定的表單URL,同時保持使用腳本重新生成表單的能力。爲了做到這一點,我寫了一個函數來刪除表單數據。最初,我讓它運行form.getItems()並看到主題中的錯誤。認爲這是因爲我不是程序員,而且我的代碼可能非常低效,所以我重新編寫了例程來分解每個itemType,並刪除每個項目之間的延遲。這讓我的程序變得非常慢,但如果Google能夠讓它運作起來,我可以處理得很慢。form.deleteItem()結果'無法編輯表單。請稍等,然後重試'
這是我目前的代碼,不幸的是,它仍然給我同樣的錯誤。我的問題實際上是Google的後端問題?它是我的代碼嗎?都?
我對形式的信息的全局變量:
var formurl='*a url that works for me*'
var form=FormApp.openByUrl(formurl);
function DeleteFormItems() {
var formcheckboxitems=form.getItems(FormApp.ItemType.CHECKBOX);
var formdateitems=form.getItems(FormApp.ItemType.DATE);
var formdatetimeitems=form.getItems(FormApp.ItemType.DATETIME);
var formdurationitems=form.getItems(FormApp.ItemType.DURATION);
var formgriditems=form.getItems(FormApp.ItemType.GRID);
var formimageitems=form.getItems(FormApp.ItemType.IMAGE);
var formlistitems=form.getItems(FormApp.ItemType.LIST);
var formmultiplechoiceitems=form.getItems(FormApp.ItemType.MULTIPLE_CHOICE);
var formpagebreakitems=form.getItems(FormApp.ItemType.PAGE_BREAK);
var formparagraphtextitems=form.getItems(FormApp.ItemType.PARAGRAPH_TEXT);
var formscaleitems=form.getItems(FormApp.ItemType.SCALE);
var formsectionheaderitems=form.getItems(FormApp.ItemType.SECTION_HEADER);
var formtextitems=form.getItems(FormApp.ItemType.TEXT);
var formtimeitems=form.getItems(FormApp.ItemType.TIME);
for (var i = formcheckboxitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formdateitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formdatetimeitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formdurationitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formgriditems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formimageitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formlistitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formmultiplechoiceitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formparagraphtextitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formscaleitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formsectionheaderitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formtextitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formtimeitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
for (var i = formpagebreakitems.length-1; i >= 1; i--) {
Utilities.sleep(2000)
form.deleteItem(i);
};
}
這裏是我的更新腳本,在那裏我仍然遇到的主題提到的錯誤,但它使更多的進步(刪除幾個項目)之前它得到消息。
var formurl='*a url that works for me*'
var form=FormApp.openByUrl(formurl);
function DeleteFormItems() {
var formitems=form.getItems();
Logger.log('There are '+formitems.length+' total form items');
for (var i = 1; i <= formitems.length-1; i++) {
Utilities.sleep(2500)
form.deleteItem(formitems[i]);
};
}
我建議將deleteItem行更改爲F.deleteItems(F.getItems()。length-1))''。這可以防止在嘗試刪除非空的PageBreakItem時出現錯誤 –