0

我有一个表格,可以作为我的 NGO 接收志愿者团队的申请表。我想做的是创建一个脚本,在有人填写表格后向注册商发送电子邮件。这是我知道怎么做的简单部分。

我想在“电子邮件通知”中包含一些问题的关键答案,供注册商查看。这我也知道如何完成。

这是我当前有效的代码:

function Team_ApplicationMailer(e) {
   var recipient = "myemail@gmail.com";
   var timestamp = e.values[0];
   var name = e.values[3];
   var country = e.values[1]
   var subject = e.values[1]+' wants to Volunteer!' ;
   var startdate = e.values[12];
   var enddate = e.values[13]
   var hyperlink = "mylink.com"
   htmlBody = '<u><strong>'+name+'</u></strong> from: <u><strong>'+country+'</strong></u>just completed the Teams Application Form for these dates: <u><strong>'+startdate+' to '+enddate+'</u></strong><br><br>Form completed on: <u><strong>'+timestamp+'</u></strong><br><br>View the Form: <a href="'+hyperlink+'">Click Here</a>';
MailApp.sendEmail(recipient, subject, htmlBody, {htmlBody:htmlBody});
}

这是我想添加的棘手部分:我还想添加在 e.values[19] 和 e.values[20] 中找到的数据,但这些值来自多项选择 (e.values[19]) 或复选框(e.values[20]) 并且我需要简化的值——即删除一些文本——并且可能在通过电子邮件发送时拆分。

这两个问题基本相同。e.values[19] 是“你想做什么:第一优先级”,带有一些多项选择。并且 e.values[20] 是带有一些复选框选项的“您还想做什么”。两个问题都有相同的 7 个选项,每个选项都有很长的描述(因此需要缩短)

基本上我想要 e.values[19] 的值如下所示:

optionX:(详细说明)

在电子邮件中看起来像这样:

你想做什么:optionX。

我不希望包含“()”中选项的长描述。

对于 e.values[20] 我希望这些值在电子邮件中看起来像这样:

你还想做什么:选项A,选项B,选项C

取而代之的是:

选项A:(详细说明),选项B:(详细说明),选项C:(详细说明)

我研究了 .replace 和 .split 函数,但不知道如何使它们一起工作,尤其是对于复选框选项。

谢谢您的帮助!

4

1 回答 1

1

我为此写了一个函数。它只是删除括号内的任何内容()。这似乎是您正在寻找的。

var s = e.values[19];
s = s.replace(/\([^)]*\)/g,"");

如果括号内有括号,请告诉我,我将不得不进行快速编辑。

那么这里发生了什么。

  1. 它正在寻找一个(.
  2. 它在最后匹配 a 的同时寻找尽可能多的字符)。这是没有)内部的。
    • 如果你允许一个)inside,它会匹配optionA:(...), optionB: (...), optionC: (...)。我们想避免这种情况,所以我们不允许)进入。就是这个[^)]意思。
  3. g标志意味着匹配“全局”或字符串中的任何地方。
于 2013-02-18T13:29:16.190 回答