从Google表单中获取响应链接

10
我有一个附加在 Google 表单上的脚本,提交后会向 Discord 频道发送通知。我想要包含一个指向个别响应的直接链接 (链接看起来像 https://docs.google.com/forms/d/<myformid>/edit#response=<responseid>),该如何检索该链接?使用 Form.getEditUrl() 方法只能获取链接的一部分,到 /edit 为止,但我无法获取正确的 ID。我查看了 FormResponse.getId() 但这并没有将我链接到任何响应。
以下是手动获取该链接的步骤: enter image description here
3个回答

0

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

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

3
我不想编辑回复,我正在寻找一个只读访问链接。我在原帖中添加了一张截图,说明如何通过编辑表单手动到达那里。 - sascha_lamp
@sascha_lamp,建议的解决方案不起作用,你找到了解决方法吗? - Riccardo
@Riccardo 抱歉,我还没有找到解决方法。 - sascha_lamp
2
很可惜API没有暴露这个功能...它可能会非常有用。 - Riccardo

0

你可以通过 .getId() 方法获取 responseId。

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

或者如果您是在提交表单时执行此操作:

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

0
你需要的是打开正确选项卡的表单编辑器的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-SrmTW8tK0zHvQPmVsnYzY https://docs.google.com/forms/d/FORMID/edit#response=2_ABaOnuet7P69_wc3S4QJkgkjS4abty4aDD9Zn1IQ8bhSKyGiynGGtuyg1v0A-xkLgOMelUE

在edit#response=后,它们是不同的。 第一个是我从表单编辑器中打开的最新响应复制来的。第二个是由代码生成的。当url出现错误时,它会将您带到您的表单编辑页面,但会重定向到第一个响应以打开它。

似乎是一个错误或未开发的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接