javascript 从Google表单中检索到响应的链接

hec6srdp  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(96)

我有一个附加到谷歌表单的脚本,它在提交时向Discord频道发送通知。我想包括一个直接链接到个人的React(链接看起来像https://docs.google.com/forms/d/<myformid>/edit#response=<responseid>)。我如何检索该链接?我用Form.getEditUrl()获得了/edit的部分链接,但我无法获得正确的ID。我检查了FormResponse.getId(),但这并没有将我链接到任何响应。
以下是如何通过编辑表单手动访问该链接:

kg7wmglp

kg7wmglp1#

由于您知道响应ID,因此可以使用geEditResponseUrl方法来获取表单响应的直接链接。请注意,任何具有此URL的人都可以编辑响应。

function getEditUrl(responseId) {
  var form = FormApp.getActiveForm();
  var response = form.getResponse(responseId);
  return response.getEditResponseUrl()  
}
vfhzx4xs

vfhzx4xs2#

您可以通过。getId()方法。

let response = form.getResponse(responseId);
let responseId = response.getId();

或者如果您在Submit上执行此操作,

let form = FormApp.getActiveForm();
let allResponses = form.getResponses();
let latestResponse = allResponses[allResponses.length - 1];
let responseId = latestResponse.getId();
wxclj1h5

wxclj1h53#

您需要的是在正确选项卡中打开的窗体的编辑器的URL

var responseId = e.response.getId()
var urlString = "https://docs.google.com/forms/d/" + formId + "/edit#response=" + responseId

问题是getId()函数返回的ID类型与在编辑屏幕上生成的ID类型不同。我试了这两个例子:

function onFormSubmit(e){
var responseId = e.response.getId()
}

Earlking的回应

var allResponses = thisForm.getResponses();
var latestResponse = allResponses[allResponses.length - 1];
var responseId = latestResponse.getId();

它们都给予了相同的ID,但不是所需的URL ID,
下面是比较URL https://docs.google.com/forms/d/FORMID/edit#response=ACYDBNh8k40Y7zxtUeYzw8wDwRx4pggu8APuxl5TmInVVieXN-SrmTW8tK0zHvQPmVsnYzYhttps://docs.google.com/forms/d/FORMID/edit#response=2_ABaOnuet7P69_wc3S4QJkgkjS4abty4aDD9Zn1IQ8bhSKyGiynGGtuyg1v0A-xkLgOMelUE的代码片段
在编辑#response=之后,它们是不同的。我从窗体编辑器复制的第一个文件打开到最后一个响应。第二个是由代码生成的。它会带你到你的表单编辑页面,但是当url有错误时,它会重定向到第一个响应。
似乎是Bug或未开发的功能。

相关问题