Используйте Google Sheets для кодирования HTML в специальные символы HTML - PullRequest
2 голосов
/ 10 июля 2019

Я пытаюсь кодировать блок HTML в ячейке, чтобы HTML можно было отображать на веб-странице, завернутой в теги <pre>.

Итак

<div class="html"> 
    <html> 
    <head>
<title>Title</title>
</head> 
    <body>
    <p>Unrendred html</p>     </body> 
    </html> 
</div>

становится

<code>
<pre>
&lt;div class="html"&gt;
    &lt;html&gt;
    &lt;head&gt;&lt;title&gt;Title&lt;/title&gt;&lt;/head&gt;
    &lt;body&gt;
    &lt;p&gt;Unrendred html&lt;/p&gt;
    &lt;/body&gt;
    &lt;/html&gt;
&lt;/div&gt;

Теперь я думал, что взломал, найдя формулу =ENCODEURL, но это выдает немного другой результат.

%26lt%3Bdiv%20class%3D%26quot%3Bhtml%26quot%3B%26gt%3B%20%26lt%3Bhtml%26gt%3B%20%26lt%3Bhead%26gt%3B%20%26lt%3Btitle%26gt%3BTitle%26lt%3B%2Ftitle%26gt%3B%20%26lt%3B%2Fhead%26gt%3B%20%26lt%3Bbody%26gt%3B%20%26lt%3Bp%26gt%3BUnrendred%20html%26lt%3B%2Fp%26gt%3B%20%26lt%3B%2Fbody%26gt%3B%20%26lt%3B%2Fhtml%26gt%3B%20%26lt%3B%2Fdiv%26gt%3B

Этот CodePen показывает идеальный вывод и то, как я могу успешно отображать HTML-код в HTML.

Я думаю, что опция «кодирование» называется HTML Special Character. Как я могу получить это в Google Sheets? Возможно через формулу или регулярное выражение

1 Ответ

1 голос
/ 11 июля 2019

Я получаю доступ к своей ячейке таблицы Google Spread через JSON и добавляю туда HTML.

Таблица Google Spread: https://docs.google.com/spreadsheets/d/17zfaoB56EfdSc9IzkJitSRi5wLGv-GJQwZaOPj5cZM0/edit#gid=0

Таблица Google Spread JSON: https://spreadsheets.google.com/feeds/cells/17zfaoB56EfdSc9IzkJitSRi5wLGv-GJQwZaOPj5cZM0/1/public/full?alt=json

Демонстрация кодов: https://codepen.io/aystarz52/pen/ormamN?editors=1011

$(function(){
  var sheetUrl = 'https://spreadsheets.google.com/feeds/cells/17zfaoB56EfdSc9IzkJitSRi5wLGv-GJQwZaOPj5cZM0/1/public/full?alt=json';
  $.getJSON(sheetUrl, function(data){
    var entry = data.feed.entry;
    var htmlCode = []; // the leftmost column of the Google Sheets
  for (var i = 0; i < entry.length; i += 1){
      // entry[i].content.$t retrieves the content of each cell
      htmlCode.push(entry[i].content.$t);
    }
    var uri= escape_html(htmlCode);
    var res = escape(uri);
    var appendContents = document.getElementById("demo").textContent = uri; 
  })
});

function escape_html(str) {

 if ((str===null) || (str===''))
       return false;
 else
   str = str.toString();

  var map = {
    '<': '&lt;',
    '>': '&gt;',
    '"': '&#x00022;',
    "'": '&#039;',
  ";": '&#x0003B;'
  };

  return str.replace(/[<>"']/g, function(m) { return map[m]; });
}

Вот символы кодирования: https://dev.w3.org/html5/html-author/charref

...