You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:50:57