简体   繁体   English

如何向 javascript 消息添加超链接?

[英]How can I add a hyperlink to a javascript message?

Im trying to send an email from google sheets and I've setup the columns to represent the subject, text and email addresses.我试图从谷歌表格发送 email 并且我已经设置了代表主题、文本和 email 地址的列。 The problem is that I need to add a hyperlink in the middle of the message and im stuck here.问题是我需要在消息中间添加一个超链接并且我卡在这里。 I can't get the paragraph to format correctly AND have the hyperlink replace a word in the middle of the sentence.我无法正确格式化段落并让超链接替换句子中间的单词。

This is the code:这是代码:

function AISEMAIL() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Email Addresses');
var sheet2=ss.getSheetByName('Email Fields');

var subject = sheet2.getRange(2,1).getValue();
var message = sheet2.getRange(2,2).getValue();

var calendardisplayname = sheet2.getRange(2,3).getValue();
var calendarlink = sheet2.getRange(2,4).getValue();

var formdisplayname = sheet2.getRange(2,5).getValue();
var formlink = sheet2.getRange(2,6).getValue();

message=message.replace("<calendar>",calendardisplayname).replace("<form>",formdisplayname);

var n=2;
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
 let options = {
    htmlBody: message
    + '<a href="' + calendarlink + '">' + calendardisplayname + '</a>'
    + '<a href="' + formlink + '">' + formdisplayname + '</a>'

  }
GmailApp.sendEmail(emailAddress, subject, message,options);
}
}

Problem:问题:

  • You are always trying to append the links at the end on your options .你总是试图 append 链接在你的options末尾。 Also, it becomes redundant.此外,它变得多余。 What you need to do is include the links when you replace the values of <calendar> and <form> .您需要做的是在替换<calendar><form>的值时包含链接。

Code:代码:

  // Add the links on the replace
  message = message
    .replace("<calendar>", '<a href="' + calendarlink + '">' + calendardisplayname + '</a>')
    .replace("<form>", '<a href="' + formlink + '">' + formdisplayname + '</a>');

  var n = 2;
  for (var i = 2; i < n + 1; i++) {
    var emailAddress = sheet1.getRange(i, 1).getValue();
    let options = {
      htmlBody: message
    }
    GmailApp.sendEmail(emailAddress, subject, message, options);
  }

Old Output:老Output:

样本输出1

New Output:新 Output:

样本输出2

This is just a guess, but could you use HtmlService to create your html message?这只是一个猜测,但您可以使用HtmlService来创建您的 html 消息吗?

function AISEMAIL() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Email Addresses');
var sheet2=ss.getSheetByName('Email Fields');

var subject = sheet2.getRange(2,1).getValue();
var message = sheet2.getRange(2,2).getValue();

var calendardisplayname = sheet2.getRange(2,3).getValue();
var calendarlink = sheet2.getRange(2,4).getValue();

var formdisplayname = sheet2.getRange(2,5).getValue();
var formlink = sheet2.getRange(2,6).getValue();

message=message.replace("<calendar>",calendardisplayname).replace("<form>",formdisplayname);

var n=2;
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();

//ADDED htmlText VARIABLE
var htmlText;
 let options = {

// ADDED HtmlService.createHtmlOutput()
    htmlBody: htmlText = HtmlService.createHtmlOutput(message
    + '<a href="' + calendarlink + '">' + calendardisplayname + '</a>'
    + '<a href="' + formlink + '">' + formdisplayname + '</a>');

  }

// CHANGED message TO htmlText
GmailApp.sendEmail(emailAddress, subject, htmlText,options);
}
}

REFERENCES HtmlService参考HtmlService

Also, if you need to create dynamic html for each email, check out these links...此外,如果您需要为每个 email 创建动态 html,请查看这些链接...

createTemplateFromFile() createTemplateFromFile()

.evaluate() 。评估()

Templated HTML 模板化 HTML

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM