【发布时间】:2015-11-07 21:11:23
【问题描述】:
我有一个 Google Form 带有一个 Google 电子表格来存储回复。在我的电子表格中,我有 4 列:姓名、电子邮件、收入和第四列 Id,用于识别特定的收件人。
我想要完成的是为每个受访者生成一个唯一的 URL,以便他们可以响应表单并在以后使用相同的 URL 来编辑表单。
我查看了getEditUrl()(Google Apps 脚本)方法,该方法在提交响应后为响应者创建了一个唯一的 URL——代码如下:
function myFunction() {
assignEditUrls();
}
function assignEditUrls() {
var form = FormApp.openById('1vsqvwomoqSXwF6TlNkmmktAAk2av2r-2LRrBYJdv3VQ');
//enter form ID here
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
//Change the sheet name as appropriate
var data = sheet.getDataRange().getValues();
var urlCol = 5; // column number where URL's should be populated; A = 1, B = 2 etc
var responses = form.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
var resp = responses[i];
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(shortenUrl(responses[i].getEditResponseUrl()));
withItemResponse(responses[i])
}
for (var j = 1; j < data.length; j++) {
var dop = data[j][0]
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]: '']);
}
sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
}
function shortenUrl(longUrl) {
// google url shortener api key
var key = "AIzaSyBVG4Q5i1mNI0YAO0XVGZ3suZU8etTvK34";
var serviceUrl="https://www.googleapis.com/urlshortener/v1/url?key="+key;
var options={
muteHttpExceptions:true,
method:"post",
contentType: "application/json",
payload : JSON.stringify({'longUrl': longUrl })
};
var response=UrlFetchApp.fetch(serviceUrl, options);
if(response.getResponseCode() == 200) {
var content = JSON.parse(response.getContentText());
if ( (content != null) && (content["id"] != null) )
return content["id"];
}
return longUrl;
}
但是我想用另一种方式来做,即首先生成唯一的 URL,然后发送给受访者,这样他们就可以提交和编辑他们的回复,而无需向他们发送另一个 URL(例如editurlresponse)。
这可能吗?
【问题讨论】:
-
您想知道是谁提交了表单吗?你有没有看过预填充的 url 是如何构造的?您可以构造一个“预填充”的 url(填充部分或所有字段的 url)。例如,您可以构建一个预填充的 url,该 url 填写一个项目,即提交表单的人的姓名。
-
不是谁回复的。我想为每个收件人建立一个唯一的网址,以便他们可以使用该网址提交然后重新编辑他们的回复。
-
这个问题被另一个用户交叉发布到 Web Apps SE 站点:webapps.stackexchange.com/q/86396/88163
-
第三段有错误。它说“getEditUrl”,但此方法返回用于编辑表单的 URL,而不是用于编辑响应的 URL。见getEditUrl()。
标签: google-apps-script google-api google-sheets google-forms