拆分前检索所有内容

Retrieve all content before split

我正在尝试转发一封电子邮件,并在原邮件的第 6 段之后添加一段,如下所示:

p1
p2 
p3
p4
p5
p6
p7
p8
p9

我有这个脚本(下面只展示了一部分):

var body = messages[j].getPlainBody();
var firstpart = body.split("\n")[7,8,9]);
var secondpart = body.split("\n")[1,2,3,4,5,6]);
GmailApp.sendEmail(recipient,subject, '', {htmlBody: "blabla" + body});

而不是这个,我想要这样的东西:

var body = messages[j].getPlainBody();
var firstpart = body.split("\n")[7,8,9]);
var secondpart = body.split("\n")[1,2,3,4,5,6]);
GmailApp.sendEmail(recipient,subject, '', {htmlBody: firstpart + "blabla" + secondpart});

这不起作用,因为拆分 returns 只有一个段落。有没有办法将所有前 6 段和所有最后一段都包含在变量中?

非常感谢!

您可以在此处进行正则表达式替换:

var input = "p1\np2\np3\np4\np5\np6\np7\np8\np9";
var output = input.replace(/^((?:[\s\S]*?\n){6})/, "blabla\n");
console.log(output);

我相信你的目标如下。

  • 您想在 body 的文本中插入值 "blabla"

  • 根据您 Instead of this, I would like to have something like that: 的脚本,您想实现以下结果。

      p7
      p8
      p9
      blabla
      p1
      p2
      p3
      p4
      p5
      p6
    

你的情况,下面的修改怎么样?

修改后的脚本:

var body = messages[j].getPlainBody();
var p = body.split("\n");
var res = [...p.slice(6, 9), "blabla", ...p.slice(0, 6)].join("\n");
GmailApp.sendEmail(recipient, subject, '', { htmlBody: res });
  • 当这个脚本为运行时,得到上面的结果

  • 如果要检索以下结果,

      p1
      p2
      p3
      p4
      p5
      p6
      blabla
      p7
      p8
      p9
    
    • 请修改var res = [...p.slice(6, 9), "blabla", ...p.slice(0, 6)].join("\n");如下。

        var res = [...p.slice(0, 6), "blabla", ...p.slice(6, 9)].join("\n");
      

注:

  • 在您的脚本中,使用了 htmlBody。如果要将结果值作为HTML body,请将join("\n")修改为join("<br>").

  • 作为附加信息,如果您的 body 值超过 9 个段落并且您想包括所有段落,请修改 var res = [...p.slice(6, 9), "blabla", ...p.slice(0, 6)].join("\n");var res = [...p.slice(0, 6), "blabla", ...p.slice(6, 9)].join("\n"); 如下?

    • var res = [...p.slice(6), "blabla", ...p.slice(0, 6)].join("\n");
    • var res = [...p.slice(0, 6), "blabla", ...p.slice(6)].join("\n");

已添加:

根据您的以下回复,

Input: <br>p1<br>p2<br>p3<br>p4 Output at goal: <br>p1<br>p2<br>blabla<br>p3<br>p4 Output I actually get: p1 p2 blabla p3 p4 I miss the <br> in my output, but I WANT them.

在这种情况下,下面的示例脚本怎么样?

示例脚本:

var body = "<br>p1<br>p2<br>p3<br>p4";
var p = body.split("<br>");
p.splice(3, 0, "blabla");
var res = p.join("<br>");
console.log(res) // <br>p1<br>p2<br>blabla<br>p3<br>p4

  • 当此脚本是运行您的<br>p1<br>p2<br>p3<br>p4样本输入时,您可以看到您期望的<br>p1<br>p2<br>blabla<br>p3<br>p4样本输出值。