HtmlService表不支持电子表格中的换行符和超链接

HtmlService table not supporting line breaks and hyperlinks from spreadsheet

本文关键字:换行符 超链接 不支持 电子表格 HtmlService      更新时间:2023-09-26

我正在编写Google Apps脚本,以便使用HtmlService将电子表格中的数据显示到HTML表中。但我面临以下两个挑战:

  1. 若电子表格单元格值中有换行符,表格会将其显示为单行
  2. 如果电子表格单元格有超链接,例如链接到Google Drive文件,它会在表格单元格中显示为纯文本

我尝试将电子表格单元格值写为<a href="url of file">File Name</a>,但仍然将其作为纯文本读取,而不制作超链接。下面是HTML代码。

如何在HTML表格中显示带有换行符的电子表格单元格值?此外,如何在表格中为电子表格单元格中的URL创建超链接?

    <table cellspacing="0" style="width:700px; background-color:#fdfbc4; table-layout:fixed; word-wrap: break-word ">
   <? for(var l=0; l< data_labels.length -1 ; l++){ ?>
       <tr>         
         <td> <?= data_labels[l] ?> </td> <td > <?= data[l] ?></td>        
       </tr>
   <? } ?>
   </table>

假设您有一个包含电子表格单元格中文本的变量result,您可以通过用<br>标记替换换行符来复制HTML的换行符。

result = result.replace(/'n/g,"<br>");

在我自己的SheetConverter库中,我还将空格替换为不间断空格,并对<符号进行编码,以避免将单元格内容解释为HTML。

result = result.replace(/ /g,"&nbsp;").replace(/</g,"&lt;").replace(/'n/g,"<br>");

问题的第2部分不容易回答,部分原因是在电子表格中有多种方式可以表达URL。

  • 如果单元格包含HYPERLINK()函数,则可以使用Range.getFormula()检索公式,并从中获取URL和显示的文本。然而,URL可能是另一个公式或单元格引用,因此您仍然可能会得到一个不可行的链接。

  • 如果单元格包含Google Sheets解释为URL或电子邮件地址的文本,则该单元格将在Sheets GUI中标记为链接,但生成的格式和HREF都不可用于Google Apps脚本。

请随意查看SheetConverter源代码并从中获取想法,或者将其用作库来简化您的工作。

显示换行符/空格的简单解决方案
使用html标记<pre>Data retreived here</pre>
然后,您可以将css类应用于pre元素,以更改预定义的字体。

The HTML Preformatted Text (<pre>) represents preformatted text. Text within this element is typically displayed in a non-proportional font exactly as it is laid out in the file. Whitespaces inside this element are displayed as typed.