如何拆分表单条目并替换单元格中的文本

时间:2013-02-18 09:34:39

标签: google-apps-script google-sheets

我有一份表格,作为我的非政府组织接收志愿者团队的申请。我想要做的是创建一个脚本,当有人填写表单时,该脚本会向注册商发送电子邮件。这是我知道该怎么做的简单部分。

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

这是我当前的代码:

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],我希望电子邮件中的值如下所示:

您还想做什么:optionA,optionB,optionC

INSTEAD of This:

optionA :(长描述),optionB :(长描述),optionC :(长描述)

我查看了.replace和.split函数,但不知道如何使它们一起工作,特别是对于复选框选项。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

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

如果括号内有括号,请告诉我,我必须快速编辑。

所以这里发生了什么。

  1. 正在寻找(
  2. 在最后匹配)时,它正在寻找尽可能多的字符。这里面没有)
    • 如果您在内部允许),则会匹配optionA: (...), optionB: (...), optionC: (...) 。我们希望避免这种情况,因此我们不允许)在里面。这就是[^)]的含义。
  3. g标志表示匹配“全局”或字符串中的任何位置。