2012-07-20 88 views
1

我已经搜索并搜索了这个答案,但没有运气。 我试图用doc.replaceText()替换文档中的文本。 (参考关于从电子表格发送电子邮件的相同教程)。无论我可以尝试什么,%,#或任何其他特殊字符,我的字符串都不会被替换。任何帮助,将不胜感激。“doc.replaceText”在谷歌应用程序脚本不工作

这里是我的代码片段:

function createHtmlMessage(gradesList) 
{ 

    var templateDocId = ScriptProperties.getProperty("EmailTemplateDoc"); 
    var docId = DocsList.getFileById(templateDocId).makeCopy().getId(); 
    var doc = DocumentApp.openById(docId); 
    var body = doc.getActiveSection(); 
    var html = ""; 

    var keys = { 
     STUDENT_NAME: "student", 
     GR_ENGLISH: gradesList[0], 
     GR_MATHS: gradesList[1], 
     GR_SCIENCE: gradesList[2], 
     GR_SOCIAL: gradesList[3], 
     GR_2NDLANG: gradesList[4], 
     GR_3RDLANG: gradesList[5], 
     GR_COMPUTERS: gradesList[6], 
     REMARKS: "remarks" 
    }; 


    for (var k in keys){ 
    var source = k; 
    var dest = keys[k]; 
    body.replaceText("%" + k + "%", keys[k]); 
    } 
    html = getDocAsHtml(docId); 

    DocsList.getFileById(docId).setTrashed(true); 
    return html; 
} 

所有我的“钥匙”存在与在前一个和下面的“%”符号在文档中。

回答

1

我看到你做了更改后垃圾文件。不确定目的 在任何情况下,在进行更改后,都应该尝试Document.saveAndClose()。

0

你需要得到它的HTML之前保存该文档

for (var k in keys){ 
    var source = k; 
    var dest = keys[k]; 
    body.replaceText("%" + k + "%", keys[k]); 
    } 
doc.saveAndClose(); 
html = getDocAsHtml(docId); 
+0

是的,斯里克是对的。我在写作时发布了答案。 – 2012-07-20 06:45:52

0

你看到this post这是在同样的主题?

此外,我不确定斯里克对储蓄所说的是什么,因为我们不知道你的getDocAsHtml(docId)函数是什么....也许你也可以发布这个部分?

编辑:我刚刚测试你的代码和替换部分按预期工作...我怀疑问题是在转换为HTML。你应该保持垃圾文件,看看这个是否可以。

相关问题