如何使用Google Script发送含多个可点击Jira工单超链接的邮件
调整后可实现多工单超链接的完整代码
function jira() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var jiraSheet = ss.getSheetByName('Mailer'); var currentEmail = "emailhere@gmail.com"; var status = jiraSheet.getRange("C1").getValue(); var total_ticket = jiraSheet.getRange("C2").getValue(); // 读取C3及以下的所有工单链接 var jiraTickets = jiraSheet.getRange(3, 3, jiraSheet.getLastRow() - 2, 1).getValues(); // 遍历生成所有工单的超链接片段 var ticketLinks = []; jiraTickets.forEach(function(row) { var ticketUrl = row[0]; // 跳过空行 if (ticketUrl) { // 可自行修改<a>标签里的显示文本,比如要显示工单ID可以自己提取 ticketLinks.push(`<a href="${ticketUrl}" target="_blank">${ticketUrl}</a>`); } }); // 所有链接默认用顿号分隔,也可以换成<br>实现每行一个链接 var linksHtml = ticketLinks.join("、"); var subject = "[AUTOMATION MAILER] Pending JIRA Ticket - Change Phone Number"; // HTML邮件换行用<br>,不要用\n var htmlBody = `Hi Leaders<br><br> There is ${total_ticket} pending tickets on jira. Kindly solve these tickets: ${linksHtml} <br><br><br>Best Regards`; // 给不支持HTML的邮件客户端准备的纯文本内容 var plainBody = `Hi Leaders\n\n There is ${total_ticket} pending tickets on jira. Kindly solve these tickets:\n${jiraTickets.filter(row => row[0]).map(row => row[0]).join("\n")} \n\n\nBest Regards`; Logger.log(htmlBody); if (status == 'Yes') { // 单次发送即可,同时配置纯文本和HTML格式,不需要发两次 MailApp.sendEmail({ to: currentEmail, subject: subject, body: plainBody, htmlBody: htmlBody }); } }
核心修改点说明
- 原代码直接把
getValues()返回的二维数组拼入超链接,无法识别多个链接:新增遍历逻辑,把每个有效工单链接单独生成<a>标签 - 修复了原代码重复发送两封邮件的bug:单次调用
sendEmail同时配置纯文本body和HTML格式htmlBody,适配不同邮件客户端 - 修复了HTML邮件内换行不生效的问题:HTML格式内容用
<br>做换行符 - 新增空行过滤逻辑,避免工作表C列下方的空行生成无效链接
如果需要每个工单单独占一行,只需要把ticketLinks.join("、")改成ticketLinks.join("<br>")即可。
内容的提问来源于stack exchange,提问作者verawatayyy
相关产品推荐
相关产品推荐

