无法为Google Forms用户创建预先填充的URL



这是我的第一篇文章。我已经从这些论坛学到了我所知道的关于应用程序脚本的几乎所有东西,所以提前感谢你。

我正在尝试根据以前提交的内容创建一个预先填充的谷歌表单。数据以字符串形式传递给窗体。


function filledFormGenerate(str){
var dataarr = str.split('♠');
var form = FormApp.openById("FORMID");
var formResponse = form.createResponse();
var items = form.getItems()

var choices = items[0].asMultipleChoiceItem().getChoices()
var formitem = items[0].asMultipleChoiceItem()
var response = formitem.createResponse(choices[0].getValue());
formResponse.withItemResponse(response);

response = items[7].asTextItem().createResponse(dataarr[3].toString())
formResponse.withItemResponse(response);


var url = formResponse.toPrefilledUrl();
var html = '<html><body><a href="'+url+'" target="blank" onclick="google.script.host.close()">'+'Follow this link to submit your next form.'+'</a></body></html>';
var relinkui = HtmlService.createHtmlOutput(html)
var ui = SpreadsheetApp.getUi();
ui.showModelessDialog(relinkui, "Relinking Form")
}

使用我自己的帐户,这是完全成功的,但其他用户在尝试访问表单URL时会出现以下错误:

异常:找不到具有给定ID的项目。可能是因为你没有编辑过这个项目,或者你没有访问它的权限。

除了让所有用户都可以编辑表单之外,是否有一组权限可以实现这一点?

感谢

您需要以代码代表您运行的方式来实现代码

如果它绑定到触发器(例如onOpenonEdit(,则它需要是可安装的,而不是简单的触发器。

说明:

  • 简单触发器代表用户运行,以执行触发此触发器的操作
  • 如果用户对FORMID调用的表单没有编辑访问权限,则会出现授权错误
  • 相反,如果您使用可安装触发器,即使其他用户执行了触发触发器的操作,这些触发器也将代表您运行
  • 由于您可以访问您的表单,代表您执行脚本内容将是成功的

如何设置可安装触发器?

  • 将当前触发器函数从onOpenonEdit等关键字重命名为其他关键字
  • 转到Edit>Current project's triggers> "+"并将触发器绑定到重命名的函数,请参阅此处了解更多详细信息

最新更新