Google apps script 使用应用程序脚本向Google表单添加选项时保留图像

Google apps script 使用应用程序脚本向Google表单添加选项时保留图像,google-apps-script,google-forms,Google Apps Script,Google Forms,每次提交表单时,我都使用google脚本向表单中的复选框项添加新选项。某些现有复选框项目附带了用户在填写表单时看到的图像 我的问题是,每次运行脚本时,它都会从复选框项中删除图像。是否有一种方法可以在向表单添加新选项的同时将图像附加到表单 (部分)我的代码: //检索表单复选框对象 var item=form.getItems(FormApp.ItemType.CHECKBOX) .过滤器(功能(项目){ return item.getTitle()=“前五名影片”; })[0]。asCheckb

每次提交表单时,我都使用google脚本向表单中的复选框项添加新选项。某些现有复选框项目附带了用户在填写表单时看到的图像

我的问题是,每次运行脚本时,它都会从复选框项中删除图像。是否有一种方法可以在向表单添加新选项的同时将图像附加到表单

(部分)我的代码:

//检索表单复选框对象
var item=form.getItems(FormApp.ItemType.CHECKBOX)
.过滤器(功能(项目){
return item.getTitle()=“前五名影片”;
})[0]。asCheckboxItem();
//在复选框obj中列出两个“选项”,其中包含所有选项
//“existingChoicesTitles”以及所有选项的标题。
var choices=item.getChoices();
var existingChoicesTitles=choices.map(函数(值){
返回值。getValue();
})
//检查列表“值”中的obj是否已存在于数组“选项”中,如果不存在,则添加到
//“选择”
对于(i=0;i
不幸的是,目前没有办法做到这一点。 有一个活动的功能请求,要求能够使用应用程序脚本
FormApp
添加此类图像

我建议你去做个记号☆ 在这个问题上,让谷歌知道你想要这个功能,并订阅更新。您可能还希望在注释中添加您的经验和用例


在您的例子中,似乎要将一个项目添加到复选框列表中,应用程序脚本将重新生成所有复选框项目,并且由于
FormApp
不支持这些类型的图像,因此在重新生成图像时不包括它们

对于您的用例来说,除了简单地不以这种方式使用图像(如果要使用应用程序脚本修改图像)之外,似乎没有实际的解决方法

如果您愿意投入一些额外的工作,您可能希望将表单实现为一个简单的应用程序。这样,您将拥有几乎无限的灵活性和更多的功能

Web应用程序示例 这是一个非常简单的Web应用程序示例,其中显示了一个输入框和一个按钮,用于将信息发送到“后端”,在本例中为
code.gs

code.gs
函数doGet(){
返回HtmlService.createHtmlOutFromFile(“索引”)
}
函数receiveInfo(formResponse){
Logger.log(formResponse)
}
index.html

发送信息
函数main(){
常量输入=document.getElementById('input')
const info=input.value
google.script.run.receiveInfo(info)
}
const mainButton=document.getElementById(“main”)
mainButton.addEventListener('单击',()=>main())
工具书类
  // retrieve form-checkbox object
  var item = form.getItems(FormApp.ItemType.CHECKBOX)
    .filter(function(item){
      return item.getTitle() === 'Top 5 films';
    })[0].asCheckboxItem();
  
  //make 2 lists, 'choices' with all choices in the checkbox obj
  // 'existingChoicesTitles' with all the titles of the choices.
  var choices = item.getChoices();
  var existingChoicesTitles =  choices.map(function(value){
    return value.getValue();
  })

  //check if obj in list 'values' already exists in array 'choices, if not add to 
  //'choices'
  for (i = 0; i < values.length; i++) {
    if (existingChoicesTitles.includes(values[i]) == false){
      choices.push(item.createChoice(values[i]));
    }
  }
  //set 'choices' list as new list of choices
  item.setChoices(choices);