[Google 脚本]如何分配表单提交生成的编辑响应 URL,然后将其分配给确认电子邮件中的按钮?
[Google script]How to assign generated edit response URL from a form submission and then assign it to a button in confirmation email?
[编辑以避免误解和无端指责]我正在使用Google脚本开发一个短期住房预订系统。因此,当有人提交表单时,他们将收到修改后的确认电子邮件以及带有编辑响应的按钮 URL。工艺流程:
- 某人,我们称他为 A 提交了表格。
- 编辑响应 URL 生成于 sheet
- URL 将生成的内容发送到 A 的电子邮件,其中包含编辑回复 URL
如何分配表单提交生成的编辑响应 URL,然后将其分配给确认电子邮件中的按钮?提前致谢!
//Email main template
function draftEmail(request){
//generate edit URL into spreadsheet
var formRes = FormApp.openById('form id'); //
var sheetRes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet name');
var data = sheetRes.getDataRange().getValues();
var urlCol = 11;
var responses = formRes.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
}
sheetRes.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
//button link --> I want to assign the link generated from function above, and then assign it to buttonlink below
request.buttonLink = 'LINK TO EDIT RESPONSE URL GENERATED FROM ABOVE FUNCTION';
request.buttonText = "Reschedule";
switch (request.status) {
case "Approve":
request.subject = "Confirmation: " + request.room + " Reservation for " + request.dateString;
request.header = "Confirmation";
request.message = "Your room reservation has been scheduled. Total payment: " + request.total + " JPY";
break;
case "Conflict":
request.subject = "Conflict with " + request.room + "Reservation for " + request.dateString;
request.header = "Conflict";
request.message = "There is a scheduling conflict. Please pick another room or time."
request.buttonText = "Reschedule";
break;
}
}
这是email.gs部分
function makeEmail(request) {
return (
'<!DOCTYPE html><html><head><base target="_top"></head><body><div style="text-align: center;' +
'font-family: Arial;"><div id="center" style="width:300px;border: 2px dotted grey;background:' +
'#ececec; margin:25px;margin-left:auto; margin-right:auto;padding:15px;"><img src="https://upload.' +
"" +
'.svg.png"width="180" style="margin:10px 0px"><br /><div style=" border: 2px dotted grey;' +
'background:white;margin-right:auto; margin-left:auto; padding:10px;"><h2>' +
request.header +
"</h2><h3>" +
request.message +
"<br /><br/>" +
request.name +
"<br />" +
"AMS Room " + request.room +
"<br />" +
"Check-in: " + request.dateString +
"<br />" +
"Check-out: " + request.dateOutString+
"<br /></h3><br />" +
'<a href="' +
request.buttonLink +
'" class="btn" style="-webkit-border-radius: 28;' +
"-moz-border-radius: 5;border-radius: 5px;font-family: Arial; color: #ffffff;font-size: 15px;" +
'background: #ff7878;padding:8px 20px 8px 20px;text-decoration: none;">' +
request.buttonText +
'' +
);
}
这会接近您想要做的事情吗?这表明将 link 添加到可编辑的已提交表单的确认电子邮件中。
How to send email with edit URL from a google form?
这个还涉及通过电子邮件向提交者发送编辑 URL:
https://webapps.stackexchange.com/questions/50009/is-there-a-way-to-keep-track-of-the-url-used-to-edit-responses-in-google-form
这里还有一个 google 关于用户编辑回复的支持帖子。第五个评论也有一个 link 到一些脚本:https://support.google.com/docs/thread/9968940?hl=en
编辑:此 post 出现在页面右侧的相关 link 中,以防您对确保 URL 在电子邮件之前生成有任何问题发送:Google Form. Confirmation Email Script. With edit url
谢谢大家的帮助!!!感谢@Micah。我的问题实际上是如何在 google sheet 的单元格中分配一个 URL,然后将其分配给一个按钮作为 URL,下面这行就像一个魅力! = resultUrls[resultUrls.length - 1];
//Email main template
function draftEmail(request){
//generate edit URL into spreadsheet
var formRes = FormApp.openById('form id'); //
var sheetRes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet name');
var data = sheetRes.getDataRange().getValues();
var urlCol = 11;
var responses = formRes.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
}
sheetRes.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
//button link --> I want to assign the link generated from function above, and then assign it to buttonlink below
request.buttonLink = = resultUrls[resultUrls.length - 1];
request.buttonText = "Reschedule";
switch (request.status) {
.
。
.
.
}
[编辑以避免误解和无端指责]我正在使用Google脚本开发一个短期住房预订系统。因此,当有人提交表单时,他们将收到修改后的确认电子邮件以及带有编辑响应的按钮 URL。工艺流程:
- 某人,我们称他为 A 提交了表格。
- 编辑响应 URL 生成于 sheet
- URL 将生成的内容发送到 A 的电子邮件,其中包含编辑回复 URL
如何分配表单提交生成的编辑响应 URL,然后将其分配给确认电子邮件中的按钮?提前致谢!
//Email main template
function draftEmail(request){
//generate edit URL into spreadsheet
var formRes = FormApp.openById('form id'); //
var sheetRes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet name');
var data = sheetRes.getDataRange().getValues();
var urlCol = 11;
var responses = formRes.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
}
sheetRes.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
//button link --> I want to assign the link generated from function above, and then assign it to buttonlink below
request.buttonLink = 'LINK TO EDIT RESPONSE URL GENERATED FROM ABOVE FUNCTION';
request.buttonText = "Reschedule";
switch (request.status) {
case "Approve":
request.subject = "Confirmation: " + request.room + " Reservation for " + request.dateString;
request.header = "Confirmation";
request.message = "Your room reservation has been scheduled. Total payment: " + request.total + " JPY";
break;
case "Conflict":
request.subject = "Conflict with " + request.room + "Reservation for " + request.dateString;
request.header = "Conflict";
request.message = "There is a scheduling conflict. Please pick another room or time."
request.buttonText = "Reschedule";
break;
}
}
这是email.gs部分
function makeEmail(request) {
return (
'<!DOCTYPE html><html><head><base target="_top"></head><body><div style="text-align: center;' +
'font-family: Arial;"><div id="center" style="width:300px;border: 2px dotted grey;background:' +
'#ececec; margin:25px;margin-left:auto; margin-right:auto;padding:15px;"><img src="https://upload.' +
"" +
'.svg.png"width="180" style="margin:10px 0px"><br /><div style=" border: 2px dotted grey;' +
'background:white;margin-right:auto; margin-left:auto; padding:10px;"><h2>' +
request.header +
"</h2><h3>" +
request.message +
"<br /><br/>" +
request.name +
"<br />" +
"AMS Room " + request.room +
"<br />" +
"Check-in: " + request.dateString +
"<br />" +
"Check-out: " + request.dateOutString+
"<br /></h3><br />" +
'<a href="' +
request.buttonLink +
'" class="btn" style="-webkit-border-radius: 28;' +
"-moz-border-radius: 5;border-radius: 5px;font-family: Arial; color: #ffffff;font-size: 15px;" +
'background: #ff7878;padding:8px 20px 8px 20px;text-decoration: none;">' +
request.buttonText +
'' +
);
}
这会接近您想要做的事情吗?这表明将 link 添加到可编辑的已提交表单的确认电子邮件中。 How to send email with edit URL from a google form?
这个还涉及通过电子邮件向提交者发送编辑 URL: https://webapps.stackexchange.com/questions/50009/is-there-a-way-to-keep-track-of-the-url-used-to-edit-responses-in-google-form
这里还有一个 google 关于用户编辑回复的支持帖子。第五个评论也有一个 link 到一些脚本:https://support.google.com/docs/thread/9968940?hl=en
编辑:此 post 出现在页面右侧的相关 link 中,以防您对确保 URL 在电子邮件之前生成有任何问题发送:Google Form. Confirmation Email Script. With edit url
谢谢大家的帮助!!!感谢@Micah。我的问题实际上是如何在 google sheet 的单元格中分配一个 URL,然后将其分配给一个按钮作为 URL,下面这行就像一个魅力! = resultUrls[resultUrls.length - 1];
//Email main template
function draftEmail(request){
//generate edit URL into spreadsheet
var formRes = FormApp.openById('form id'); //
var sheetRes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet name');
var data = sheetRes.getDataRange().getValues();
var urlCol = 11;
var responses = formRes.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
}
sheetRes.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
//button link --> I want to assign the link generated from function above, and then assign it to buttonlink below
request.buttonLink = = resultUrls[resultUrls.length - 1];
request.buttonText = "Reschedule";
switch (request.status) {
.
。 . . }