1

我已经搜索并搜索了这个问题的答案,但没有运气。我正在尝试使用 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;
}

我所有的“密钥”都出现在文档中,前后都有“%”符号。

4

3 回答 3

1

我看到您在进行更改后将文档丢弃。不确定目的在任何情况下,您都应该在进行更改后尝试 Document.saveAndClose()。

于 2012-07-20T06:30:46.080 回答
0

您需要先将文档保存为 HTML

for ( var k in keys ){
     var source = k;
     var dest = keys[k];
     body.replaceText("%" + k + "%", keys[k]);
  }
doc.saveAndClose();
html = getDocAsHtml(docId);
于 2012-07-20T06:44:01.617 回答
0

你看到这篇关于同一主题的帖子了吗?

另外,我不确定Srik 所说的关于保存的内容,因为我们不知道您的getDocAsHtml(docId) 功能是什么……也许您也可以发布那部分?

编辑:我刚刚测试了您的代码,替换部分按预期工作......我怀疑问题出在转换为 html 中。您应该保留您丢弃的文档以查看该文档是否正常。

于 2012-07-20T06:58:23.403 回答