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

时间:2015-11-04 14:35:35

标签: javascript html hyperlink google-apps-script google-sheets

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

  1. 如果电子表格单元格值包含换行符,则表格将其显示为单行。
  2. 如果电子表格单元格有超链接,例如链接到Google云端硬盘文件,它会在表格单元格中将其显示为纯文本。
  3. 我尝试将电子表格单元格值编写为<a href="url of file">File Name</a>,但仍然将表格读取为纯文本而不创建超链接。 以下是HTML代码。

    如何在HTML表格中使用换行符显示电子表格单元格值?如何在表格中为电子表格单元格中的网址创建超链接?

        <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>
    

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

  • 如果某个单元格包含Google表格解释作为网址或电子邮件地址的文字,则会在表单GUI中将其标记为链接,但结果格式和HREF都不是适用于Google Apps脚本。

随意检查SheetConverter源并从中获取想法,或者只是将其用作库来简化您的工作。

答案 1 :(得分:0)

显示换行符/空格的简单解决方案 使用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.