首页 > 解决方案 > [Google 脚本]如何从表单提交中分配生成的编辑响应 URL,然后将其分配给确认电子邮件中的按钮?

问题描述

[编辑以避免误解和毫无根据的指责] 我正在使用谷歌脚本开发一个短期住房预订系统。因此,当有人提交表单时,他们将收到修改后的确认电子邮件以及带有编辑响应 URL 的按钮。工艺流程:

  1. 有人,我们称他为 A 提交了一个表格。
  2. 在工作表上生成编辑响应 URL
  3. 生成的 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 +
    '' +
  );
}

标签: javascripthtmlgoogle-apps-scriptgoogle-sheetsgoogle-forms

解决方案


这会接近你想要做的吗?这显示了在确认电子邮件中放置可编辑提交表单的链接。 如何从谷歌表单发送带有编辑 URL 的电子邮件?

这还用于通过电子邮件向提交者发送编辑 URL: https ://webapps.stackexchange.com/questions/50009/is-there-a-way-to-keep-track-of-the-url-used -to-edit-responses-in-google-form

这里还有一个关于用户编辑回复的谷歌支持线程。第五条评论也有一些脚本的链接: https: //support.google.com/docs/thread/9968940?hl=en

编辑:此帖子在页面右侧的相关链接中弹出,以防您在确保在发送电子邮件之前生成 URL 时遇到任何问题:Google 表单。确认电子邮件脚本。带有编辑网址


推荐阅读