设置Title后Google Forms脚本抛出异常,原可用脚本失效如何解决?
解决Google Apps Script修改表单标题时的异常问题
我编写了一段Google脚本用于修改Google表单的问题标题,代码如下:
const form = FormApp.openById(FORM_ID); form.getItemById(1697670046).setTitle("What is your first name?");
执行后问题标题已成功修改,但脚本随即抛出异常:
Exception: Unexpected error while getting the method or property setTitle on object FormApp.Item.
脚本终止运行,且此问题出现在多个此前正常运行的表单上,上周起突然失效,怀疑是语法规则发生了变更。
问题原因
getItemById() 返回的是通用的 FormApp.Item 对象,这个对象本身并没有 setTitle() 方法。之前可能因Google Apps Script的隐式类型转换能正常运行,但近期平台调整了类型检查逻辑,导致必须显式转换为具体的问题类型才能调用对应方法。
解决方法
需要将获取到的Item对象转换为对应的具体类型(比如文本框对应TextItem,选择题对应MultipleChoiceItem等),再调用setTitle()。
修改后的代码示例(假设该问题是文本输入类型):
const form = FormApp.openById(FORM_ID); // 显式转换为TextItem const textItem = form.getItemById(1697670046).asTextItem(); textItem.setTitle("What is your first name?");
如果不确定问题类型,可以先判断类型再转换,避免报错:
const form = FormApp.openById(FORM_ID); const item = form.getItemById(1697670046); if (item.getType() === FormApp.ItemType.TEXT) { const textItem = item.asTextItem(); textItem.setTitle("What is your first name?"); } else if (item.getType() === FormApp.ItemType.MULTIPLE_CHOICE) { const mcItem = item.asMultipleChoiceItem(); mcItem.setTitle("What is your first name?"); } // 其他类型可按需添加判断
内容的提问来源于stack exchange,提问作者Dave Zawilinski
相关产品推荐
相关产品推荐

