簡體   English   中英

將 HTML 傳遞給 HTML 模板

[英]Passing HTML to HTML template

我知道如果我們想將變量 from.gs 傳遞給 HTML 模板,我們這樣做:

On.html(使用<?= someVariable?>

<div>
  <table id="summary">
    <thead>
      <th>Qty</th>
      <th>Item</th>
      <th>Price</th>
      <th>Subtotal</th>
    </thead>
    <tbody>
      // variable value goes into here
      <?= items ?>

    </tbody>
    <tfoot>
      <tr>
        <td></td>
        <td></td>
        <td>Total: </td>
             // and into here
        <td><b><?= totalCost ?></b></td>

      </tr>
    </tfoot>
  </table>
</div>

和 on.gs:

var items = holdSS.getRange(i,5).getValue()
var totalCost = holdSS.getRange(i,6).getValue()   

var html = HtmlService.createTemplateFromFile("requestorEmail.html")
// matching the <?= ?> in HTML template
html.items = items
html.totalCost = totalCost

var htmlInString = html.evaluate().getContent()

變量items的大小各不相同,所以我決定將其保留為 HTML 形式,然后將其傳遞給 email 模板。 所以,

var items = "<tr>
                <td>1</td>
                <td>3M 500 Scotch Utility Trans. Tape 12mm x 25m</td>
                <td>0.98</td>
                <td>0.98</td>
            </tr>
             <tr>
                <td>2</td>
                <td>3M 558 Bulletin Board - Mocha</td>
                <td>19.9</td>
                <td>39.80</td>
            </tr>
             <tr>
                <td>1</td>
                <td>3M 560RP Post It Marker Rainbow 75mm x 12.5mm 4pad/pkt</td>
                <td>3.82</td>
                <td>3.82</td>
            </tr>"

導致(至少預期):

<div>
  <table id="summary">
    <thead>
      <th>Qty</th>
      <th>Item</th>
      <th>Price</th>
      <th>Subtotal</th>
    </thead>
    <tbody>
      // replacing <?= items ?>
      <tr>
         <td>1</td>
         <td>3M 500 Scotch Utility Trans. Tape 12mm x 25m</td>
         <td>0.98</td>
         <td>0.98</td>
     </tr>
      <tr>
         <td>2</td>
         <td>3M 558 Bulletin Board - Mocha</td>
         <td>19.9</td>
         <td>39.80</td>
     </tr>
      <tr>
         <td>1</td>
         <td>3M 560RP Post It Marker Rainbow 75mm x 12.5mm 4pad/pkt</td>
         <td>3.82</td>
         <td>3.82</td>
     </tr>

    </tbody>
    <tfoot>
      <tr>
        <td></td>
        <td></td>
        <td>Total: </td>
              // and here
        <td><b><?= totalCost ?></b></td>

      </tr>
    </tfoot>
  </table>
</div>

但是, console.log(html.evaluate().getContent())給出:

  <tbody>
      &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3M 500 Scotch Utility Trans. Tape 12mm x 25m&lt;/td&gt;&lt;td&gt;0.98&lt;/td&gt;&lt;td&gt;0.98&lt;/td&gt;
      &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3M 558 Bulletin Board - Mocha&lt;/td&gt;&lt;td&gt;19.9&lt;/td&gt;&lt;td&gt;39.80&lt;/td&gt;&lt;/tr&gt; 
      &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3M 560RP Post It Marker Rainbow 75mm x 12.5mm 4pad/pkt&lt;/td&gt;&lt;td&gt;3.82&lt;/td&gt;&lt;td&gt;3.82&lt;/td&gt;&lt;/tr&gt;        
  </tbody>

其中 HTML 標記中的所有<>都被轉義。 我已經閱讀了一些線程,其中他們使用 textarea 元素對 HTML 實體進行轉義,但我也注意到我無法在 email 客戶端中執行<script>標記? 在這種情況下我該怎么辦?

當我看到您的腳本時,似乎使用打印腳本的<?=... ?>將 HTML 放入模板 HTML 中。 在這種情況下,您的問題中會得到這樣的結果。

為了將值作為 HTML 標記,請使用強制打印腳本,例如<?.=..? ?> <?.=..? ?> . 所以,請修改如下。

從:

<?= items ?>

至:

<?!= items ?>
  • 並且,關於<?= totalCost?> ,如果要放置 HTML 標記,請像<??= totalCost ?>一樣進行修改。

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM