更改Google Apps脚本中的发件人电子邮件地址或回复

时间:2015-10-21 19:41:16

标签: email google-apps-script google-form

我有一张我们在Google上创建的表单,我的团队用它来发送每日报告。我复制了一个脚本,将包含表格内容的电子邮件发送给我们公司的几个不同的人。唯一的问题是每封电子邮件都来自我,而不是提交表单的用户。如何将其添加到我的脚本中?此外,每个表单提交时都会捕获电子邮件,因此它可以从电子表格中提取电子邮件吗?

以下是代码:

function Initialize() {

  try {

    var triggers = ScriptApp.getProjectTriggers();

    for (var i in triggers)
      ScriptApp.deleteTrigger(triggers[i]);

    ScriptApp.newTrigger("EmailGoogleFormData")
      .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
      .onFormSubmit().create();

  } catch (error) {
    throw new Error("Please add this code in the Google Spreadsheet");
  }
}

function EmailGoogleFormData(e) {

  if (!e) {
    throw new Error("Please go the Run menu and choose Initialize");
  }

  try {

    if (MailApp.getRemainingDailyQuota() > 0) {

      // You may replace this with another email address
      var to = "kevin@example.com";

      // Enter your subject for Google Form email notifications
      var subject = "Daily Report";

      var key, entry,
        message = "",
        ss = SpreadsheetApp.getActiveSheet(),
        cols = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0];

      // Iterate through the Form Fields
      for (var keys in cols) {

        key = cols[keys];
        entry = e.namedValues[key] ? e.namedValues[key].toString() : "";

        // Only include form fields that are not blank
        if ((entry !== "") && (entry.replace(/,/g, "") !== ""))
          message += key + ' :: ' + entry + "\n\n";
      }

      MailApp.sendEmail(to,subject, message);
    }
  } catch (error) {
    Logger.log(error.toString());
  }
}

3 个答案:

答案 0 :(得分:1)

MailApp不允许您更改电子邮件的发送地址,它始终会从执行脚本的Google帐户发送。

您可以获得的最接近的邮件(使用MailApp)是指定外发电子邮件中的“名称”和“回复”值。电子邮件仍然来自您的地址,但会显示另一个名称,并且任何回复都可以指向相应的用户。

请参阅此处的高级参数:

https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)

答案 1 :(得分:0)

我建议您使用像MailGun这样的邮件发送网格服务,它提供了一个HTTP API,让您可以更灵活地发送电子邮件。

但我不确定它是否可以让你“像任何人一样发送电子邮件”。如果它不能,也许你必须设置自己的电子邮件服务器来做到这一点。

https://documentation.mailgun.com/quickstart-sending.html

答案 2 :(得分:-1)

选项1:设置 - Send mail from a different address然后使用...

GmailApp.sendMail('toEmail', 'subject', 'plainBody', { from:'theOtherAddress@gmail.com', htmlBody:htmlBody } );

指定options参数中的from属性将更改其来源。

电子邮件将显示为来自您的主要地址“通过”的其他地址。

选项2:让每个可能的用户授权监控工作表中的表单提交的脚本,并使用MailApp或GmailApp直接从其帐户发送通知。