Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
492 views
in Technique[技术] by (71.8m points)

javascript - How to bold specific text using Google Apps Script?

I use Google Spreadsheets' built-in form functionality to build contact forms on my website.

Now, consider this code:

function sendFormByEmail(e)
{

  var email = "[email protected]";

  subject = e.namedValues["Subject"].toString();

  message = "Time: " + e.namedValues["Timestamp"].toString() + "

"
  + "Name: " + e.namedValues["Name"].toString() + "

"
  + "Email: " + e.namedValues["Email Address"].toString() + "

"
  + "Website: " + e.namedValues["Website"].toString() + "

"
  + "Reason For Contacting?: " + e.namedValues["Reason For Contacting?"].toString() + "

"
  + "Message: " + e.namedValues["Message"].toString() + "

";

  MailApp.sendEmail(email, subject, message);

}

It makes sure that I receive an email as soon as someone submits the form, the email's body has info. like this (example):

Time: 2012/02/25 11:53

Name: John Davis

Email: [email protected]

Website: http://google.com

Reason For Contacting?: Just wanted to chat with ya

Message: It's been long. Catch me tonight.

So, now you should have a clear idea as to what the code does. The thing is, I want the output to look like this instead (i.e., bold some text):

Time: 2012/02/25 11:53

Name: John Davis

Email: [email protected]

Website: http://google.com

Reason For Contacting?: Just wanted to chat with ya

Message: It's been long. Catch me tonight.

How do I modify the code to achieve this? Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

MailApp.sendEmail can take htmlBody as advancedArgs. Descripted in here http://code.google.com/googleapps/appsscript/class_mailapp.html

You can send htmlBody like

function sendFormByEmail(e) {
    var email = "[email protected]";
    var subject = e.namedValues["Subject"].toString();
    var msgHtml = "<b>Time</b>: " + e.namedValues["Timestamp"].toString() + "<br/>"
        + "<b>Name:</b> " + e.namedValues["Name"].toString() + "<br/>"
        + "<b>Email:</b> " + e.namedValues["Email Address"].toString() + "<br/>"
        + "<b>Website:</b> " + e.namedValues["Website"].toString() + "<br/>"
        + "<b>Reason For Contacting?:</b> " + e.namedValues["Reason For Contacting?"].toString() + "<br/>"
        + "<b>Message:</b> " + e.namedValues["Message"].toString() + "<br/>";

    var msgPlain = msgHtml.replace(/<br/>/gi, '
').replace(/(<([^>]+)>)/ig, ""); // clear html tags and convert br to new lines for plain mail
    MailApp.sendEmail(email, subject, msgPlain, { htmlBody: msgHtml });
}

The above one's for linebreaks. Use this to separate them by paragraphs:

function sendFormByEmail(e) {
    var email = "[email protected]";
    var subject = e.namedValues["Subject"].toString();
    var msgHtml = "<p>" + "<b>Time</b>: " + e.namedValues["Timestamp"].toString() + "</p>"
        + "<p>" + "<b>Name:</b> " + e.namedValues["Name"].toString() + "</p>"
        + "<p>" + "<b>Email:</b> " + e.namedValues["Email Address"].toString() + "</p>"
        + "<p>" + "<b>Website:</b> " + e.namedValues["Website"].toString() + "</p>"
        + "<p>" + "<b>Reason For Contacting?:</b> " + e.namedValues["Reason For Contacting?"].toString() + "</p>"
        + "<p>" + "<b>Message:</b> " + e.namedValues["Message"].toString() + "</p>";

    var msgPlain = msgHtml.replace(/(<([^>]+)>)/ig, ""); // clear html tags for plain mail
    MailApp.sendEmail(email, subject, msgPlain, { htmlBody: msgHtml });
}

I didnt try but it should work.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...