2014-02-17 25 views
0

我試圖在Html模板中爲Google應用程序腳本指定mailto鏈接。不幸的是,鏈路將@符號傳遞給mailto字段,或者如何繞過google-app-script中的URL編碼

<a href="mailto:[email protected]"> 

轉換爲

<a href="mailto:foo%40bar.com"> 

因爲所涉及的處理。我將如何返回正確的mailto鏈接? 更簡單地說,當我做通過調用返回的HTML:

function doGet(request) { 
    return HtmlService.createHtmlOutput('<a href="[email protected]">mail me</a>'); 
} 

返回的HTML是:

<a target="_parent" href="mailto:foo%40bar.com">mail me</a> 

這是確定的某些郵件應用程序(Mac郵件),但不是標準。謝謝你在前進,

+0

如果您提供模板/模板的一部分,會不會更容易? – g00glen00b

回答

0

我沒有與谷歌Apps腳本太多的經驗,但如果我看the docs它說以下內容:

力印刷腳本元素,使用語法<?!= ... ?>,是如 打印scriptlet,除了它們避免上下文轉義。

如果您的腳本允許不可信用戶 輸入,則上下文轉義非常重要。相比之下,如果您的scriptlet的 輸出有意包含想要完全按照指定插入 的HTML或腳本,則需要強制打印。

作爲一般規則,使用打印scriptlet而不是強制打印 scriptlets,除非您知道需要不改變地打印HTML或JavaScript 。

所以,如果我是正確的,你應該在<? ... ?>代替使用<?= ... ?>

+0

謝謝,但不幸的是,以下所有情況都返回錯誤的HTML:'>mail me', '<? var s ='mailto:「[email protected]」'; ?>>mail me2','<? var em ='[email protected]'; ?>> mail me 3' – LeonidR

0

這不是我所希望的理想答案,但它是解決問題的方法。事實證明,如果你有Caja處理器在Native模式下評估你的HTML,它不會執行'@' - >'%40'的翻譯。

return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE); 
相關問題