Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用html的url到url重定向_Javascript_Html_Redirect_Google Apps Script_Contact Form - Fatal编程技术网

Javascript 使用html的url到url重定向

Javascript 使用html的url到url重定向,javascript,html,redirect,google-apps-script,contact-form,Javascript,Html,Redirect,Google Apps Script,Contact Form,我正在尝试使用谷歌应用程序脚本提交一份联系人表单。当我提交时,它会显示以下页面: 我希望这个url重定向到我的另一个页面,如何使用脚本实现这一点 下面是脚本。只是为了说明一下,我是个初学者 /****************************************************************************** * This tutorial is based on the work of Martin Hawksey twitter.com/mhawks

我正在尝试使用谷歌应用程序脚本提交一份联系人表单。当我提交时,它会显示以下页面:

我希望这个url重定向到我的另一个页面,如何使用脚本实现这一点

下面是脚本。只是为了说明一下,我是个初学者

/******************************************************************************
 * This tutorial is based on the work of Martin Hawksey twitter.com/mhawksey  *
 * But has been simplified and cleaned up to make it more beginner friendly   *
 * All credit still goes to Martin and any issues/complaints/questions to me. *
 ******************************************************************************/

// if you want to store your email server-side (hidden), uncomment the next line
 var TO_ADDRESS = "abc@gmail.com";

// spit out all the keys/values from the form in HTML for email
// uses an array of keys if provided or the object to determine field order
function formatMailBody(obj, order) {
  var result = "";
  if (!order) {
    order = Object.keys(obj);
  }

  // loop over all keys in the ordered form data
  for (var idx in order) {
    var key = order[idx];
    result += "<h4 style='text-transform: capitalize; margin-bottom: 0'>" + key + "</h4><div>" + sanitizeInput(obj[key]) + "</div>";
    // for every key, concatenate an `<h4 />`/`<div />` pairing of the key name and its value, 
    // and append it to the `result` string created at the start.
  }
  return result; // once the looping is done, `result` will be one long string to put in the email body
}

// sanitize content from the user - trust no one 
// ref: https://developers.google.com/apps-script/reference/html/html-output#appendUntrusted(String)
function sanitizeInput(rawInput) {
   var placeholder = HtmlService.createHtmlOutput(" ");
   placeholder.appendUntrusted(rawInput);

   return placeholder.getContent();
 }

function doPost(e) {

  try {
    Logger.log(e); // the Google Script version of console.log see: Class Logger
    record_data(e);

    // shorter name for form data
    var mailData = e.parameters;

    // names and order of form elements (if set)
    var orderParameter = e.parameters.formDataNameOrder;
    var dataOrder;
    if (orderParameter) {
      dataOrder = JSON.parse(orderParameter);
    }

    // determine recepient of the email
    // if you have your email uncommented above, it uses that `TO_ADDRESS`
    // otherwise, it defaults to the email provided by the form's data attribute
    var sendEmailTo = (typeof TO_ADDRESS !== "undefined") ? TO_ADDRESS : mailData.formGoogleSendEmail;

    // send email if to address is set
    if (sendEmailTo) {
      MailApp.sendEmail({
        to: String(sendEmailTo),
        subject: "About Me: Contact form submitted",
        // replyTo: String(mailData.email), // This is optional and reliant on your form actually collecting a field named `email`
        htmlBody: formatMailBody(mailData, dataOrder)
      });
    }

    return ContentService    // return json success results
          .createTextOutput(
            JSON.stringify({"result":"success",
                            "data": JSON.stringify(e.parameters) }))
          .setMimeType(ContentService.MimeType.JSON);
  } catch(error) { // if error return this
    Logger.log(error);
    return ContentService
          .createTextOutput(JSON.stringify({"result":"error", "error": error}))
          .setMimeType(ContentService.MimeType.JSON);
  }
}


/**
 * record_data inserts the data received from the html form submission
 * e is the data received from the POST
 */
function record_data(e) {
  var lock = LockService.getDocumentLock();
  lock.waitLock(30000); // hold off up to 30 sec to avoid concurrent writing

  try {
    Logger.log(JSON.stringify(e)); // log the POST data in case we need to debug it

    // select the 'responses' sheet by default
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    var sheetName = e.parameters.formGoogleSheetName || "responses";
    var sheet = doc.getSheetByName(sheetName);

    var oldHeader = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    var newHeader = oldHeader.slice();
    var fieldsFromForm = getDataColumns(e.parameters);
    var row = [new Date()]; // first element in the row should always be a timestamp

    // loop through the header columns
    for (var i = 1; i < oldHeader.length; i++) { // start at 1 to avoid Timestamp column
      var field = oldHeader[i];
      var output = getFieldFromData(field, e.parameters);
      row.push(output);

      // mark as stored by removing from form fields
      var formIndex = fieldsFromForm.indexOf(field);
      if (formIndex > -1) {
        fieldsFromForm.splice(formIndex, 1);
      }
    }

    // set any new fields in our form
    for (var i = 0; i < fieldsFromForm.length; i++) {
      var field = fieldsFromForm[i];
      var output = getFieldFromData(field, e.parameters);
      row.push(output);
      newHeader.push(field);
    }

    // more efficient to set values as [][] array than individually
    var nextRow = sheet.getLastRow() + 1; // get next row
    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);

    // update header row with any new data
    if (newHeader.length > oldHeader.length) {
      sheet.getRange(1, 1, 1, newHeader.length).setValues([newHeader]);
    }
  }
  catch(error) {
    Logger.log(error);
  }
  finally {
    lock.releaseLock();
    return;
  }

}

function getDataColumns(data) {
  return Object.keys(data).filter(function(column) {
    return !(column === 'formDataNameOrder' || column === 'formGoogleSheetName' || column === 'formGoogleSendEmail' || column === 'honeypot');
  });
}

function getFieldFromData(field, data) {
  var values = data[field] || '';
  var output = values.join ? values.join(', ') : values;
  return output;
}
/******************************************************************************
*本教程基于Martin Hawksey twitter.com/mhawksey的工作*
*但是经过简化和清理,使其更适合初学者*
*所有的功劳都归Martin所有,任何问题/投诉/问题都归我所有*
******************************************************************************/
//如果要在服务器端(隐藏)存储电子邮件,请取消对下一行的注释
变量到_地址=”abc@gmail.com";
//以HTML格式将表单中的所有键/值吐出以发送电子邮件
//使用键数组(如果提供)或对象来确定字段顺序
函数formatMailBody(对象、订单){
var结果=”;
如果(!订单){
顺序=对象键(obj);
}
//循环遍历有序表单数据中的所有键
对于(顺序中的变量idx){
var key=订单[idx];
结果+=“”+key+“”+sanitizeInput(obj[key])+“”;
//对于每个键,连接键名及其值的`/``对,
//并将其附加到开头创建的'result'字符串中。
}
return result;//循环完成后,`result`将是一个长字符串,放在电子邮件正文中
}
//清理来自用户的内容-不信任任何人
//参考:https://developers.google.com/apps-script/reference/html/html-output#appendUntrusted(字符串)
函数sanitizeInput(rawInput){
var placeholder=HtmlService.createHtmlOutput(“”);
占位符.appendUntrusted(rawInput);
返回占位符.getContent();
}
函数doPost(e){
试一试{
Logger.log(e);//console.log的Google脚本版本请参阅:Class Logger
记录数据(e);
//表单数据的较短名称
var mailData=e.parameters;
//表单元素的名称和顺序(如果已设置)
var orderParameter=e.parameters.formDataNameOrder;
var数据顺序;
if(orderParameter){
dataOrder=JSON.parse(orderParameter);
}
//确定电子邮件的接收日期
//如果你的邮件上面没有注释,它会使用“收件人”地址`
//否则,它默认为表单的数据属性提供的电子邮件
var sendmailto=(typeof TO_ADDRESS!=“未定义”)?TO_ADDRESS:mailData.formgooglesendmail;
//如果设置了收件人地址,则发送电子邮件
如果(发送电子邮件至){
MailApp.sendmail({
收件人:字符串(sendEmailTo),
主题:“关于我:已提交的联系表”,
//replyTo:String(mailData.email),//这是可选的,依赖于您的表单实际收集的名为`email'的字段`
htmlBody:formatMailBody(mailData、dataOrder)
});
}
return ContentService//return json成功结果
.createTextOutput(
stringify({“result”:“success”,
“数据”:JSON.stringify(e.parameters)})
.setMimeType(ContentService.MimeType.JSON);
}catch(error){//if error返回此
Logger.log(错误);
返回内容服务
.createTextOutput(JSON.stringify({“结果”:“错误”,“错误”:错误}))
.setMimeType(ContentService.MimeType.JSON);
}
}
/**
*record_data插入从html表单提交中接收的数据
*e是从邮局收到的数据
*/
功能记录\u数据(e){
var lock=LockService.getDocumentLock();
lock.waitLock(30000);//延迟30秒以避免并发写入
试一试{
Logger.log(JSON.stringify(e));//记录POST数据,以防我们需要调试它
//默认情况下,选择“响应”表
var doc=SpreadsheetApp.getActiveSpreadsheet();
var sheetName=e.parameters.formGoogleSheetName | |“响应”;
var sheet=doc.getSheetByName(sheetName);
var oldHeader=sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];
var newHeader=oldHeader.slice();
var fieldsFromForm=getDataColumns(例如参数);
var row=[new Date()];//行中的第一个元素应始终是时间戳
//循环浏览标题列
对于(var i=1;i-1){
字段形式拼接(formIndex,1);
}
}
//在表单中设置任何新字段
对于(变量i=0;ioldHeader.length){
sheet.getRange(1,1,1,newHeader.length).setValues([newHeader]);
}
}
捕获(错误){
Logger.log(错误);
}
最后{
锁。释放锁();
返回;
}
}
函数getDataColumns(数据){
返回对象.键(数据).过滤器(函数(列){
return!(column==='formDataNameOrder'| | column=='formGoogleSheetName'| | | column=='formGoogleSendEmail'| | column=='='honeypot');
});
}
函数getFieldFromData(字段,数据){
var值=数据[字段]| |“”;
var output=values.join?values.join(','):值;
返回输出;
}

我试图查看您的脚本,但它返回以下错误:
未找到脚本函数:doGet

但是,您可以尝试这样做

window.location.href = "YOUR_URL";

除非你控制
google.com
:)你好,菲利佩,我跟踪了。