HtmlService表不支持电子表格中的换行符和超链接
HtmlService table not supporting line breaks and hyperlinks from spreadsheet
我正在编写Google Apps脚本,以便使用HtmlService将电子表格中的数据显示到HTML表中。但我面临以下两个挑战:
- 若电子表格单元格值中有换行符,表格会将其显示为单行
- 如果电子表格单元格有超链接,例如链接到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," ").replace(/</g,"<").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.
- 如何在映射数组中添加换行符
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 单击超链接时,如何使用Google Maps API v3缩放地图
- JQuery:向多个匹配结果添加换行符的最简单方法
- 在文本区域中使用jQuery.text()保持换行符
- 用超链接替换URLS
- 使用JavaScript从超链接加载时的默认下拉值
- javascript替换换行符和特殊字符
- 换行符拆分返回“”;未定义”;
- Hammer.js阻止在Android Webview中点击超链接
- DataTable如何防止在包含超链接的列中单击行
- 我的 mailto 链接中的换行符在 Android 手机上已损坏
- 在一列详细信息DataTables行中嵌入超链接
- HtmlService表不支持电子表格中的换行符和超链接
- 将超链接文本添加到特定行的ui-grid中
- 在表行中使用单击事件的超链接不起作用
- 使用“单击事件”超链接表行
- 带有超链接的SQL 1表行
- JQuery Table 行 .on(“click” 查找是单击了超链接还是仅单击了行
- 在jquery数据表的某一列中,行单击时进行行选择,而在超链接单击时不进行行选择