You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script发送表格邮件时如何保留超链接格式?

解决Google Apps Script发送邮件表格丢失超链接的问题

问题代码

原代码运行正常但无法保留单元格超链接:

function sendMail(){
 var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
 var data = sh.getRange("A:C").getValues();

var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;'
var htmltable = '<table ' + TABLEFORMAT +' ">';

for (row = 0; row<data.length; row++){

htmltable += '<tr>';

for (col = 0 ;col<data[row].length; col++){
  if (data[row][col] === "" || 0) {htmltable += '<td>' + 'None' + '</td>';} 
  else
    if (row === 0)  {
      htmltable += '<th>' + data[row][col] + '</th>';
    }

  else {htmltable += '<td>' + data[row][col] + '</td>';}
}

     htmltable += '</tr>';
}

    htmltable += '</table>';
    Logger.log(data);
    Logger.log(htmltable);
    MailApp.sendEmail(Session.getActiveUser().getEmail(), 'Your latest vocabulary','' ,{htmlBody: htmltable})
}

问题原因

getValues()仅返回单元格的显示文本,无法获取超链接等格式信息,导致生成的HTML表格没有链接标签。

解决方案

使用getRichTextValues()获取富文本内容,提取超链接并生成对应的HTML标签:

function sendMail() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
  // 改用getRichTextValues获取带格式的内容
  var richTextData = sh.getRange("A:C").getRichTextValues();
  
  var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;"';
  var htmltable = '<table ' + TABLEFORMAT + '>';

  for (let row = 0; row < richTextData.length; row++) {
    htmltable += '<tr>';
    
    for (let col = 0; col < richTextData[row].length; col++) {
      var cellRichText = richTextData[row][col];
      var cellContent = "";

      // 处理空值
      if (cellRichText.getText() === "" || cellRichText.getText() == 0) {
        cellContent = "None";
      } else {
        // 提取富文本中的超链接
        var runs = cellRichText.getRuns();
        for (let run of runs) {
          var url = run.getLinkUrl();
          var text = run.getText();
          if (url) {
            // 生成HTML链接标签
            cellContent += `<a href="${url}" target="_blank">${text}</a>`;
          } else {
            cellContent += text;
          }
        }
      }

      // 处理表头和普通单元格
      if (row === 0) {
        htmltable += `<th>${cellContent}</th>`;
      } else {
        htmltable += `<td>${cellContent}</td>`;
      }
    }
    
    htmltable += '</tr>';
  }

  htmltable += '</table>';
  MailApp.sendEmail(Session.getActiveUser().getEmail(), 'Your latest vocabulary', '', { htmlBody: htmltable });
}

关键改动说明

  1. 替换数据获取方法:用getRichTextValues()替代getValues(),保留单元格的格式信息
  2. 超链接提取逻辑:遍历单元格的富文本片段(getRuns()),检查每个片段是否有超链接,有则生成<a>标签
  3. 兼容原有逻辑:保留空值替换为"None"的处理,以及表头的<th>标签逻辑

内容的提问来源于stack exchange,提问作者orschiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:45:21