0

我可以将 gdoc 的正文添加到电子邮件中吗?我有点知道该怎么做,但我不完全确定。我在下面写了这段代码来帮助我。我是新手,我已经设法运行了一些脚本,但我完全迷失了这个。我看过几个视频,这就是我能够做到的。代码如下。基本上我想要做的是能够让用户输入他的姓名和另一个变量,然后转到谷歌文档文件并将其更改为输入的值,然后将其放回电子邮件中并将其发送到地址......关于我做错了什么或我应该从哪里开始的任何想法?提前致谢。

function gsnot() {
var emailaddress="albdominguez25@gmail.net";
var sub="Subject1";
var pattern = Browser.inputBox("Enter your name");
var pattern2 = Browser.inputBox("Enter the minutes:");
var templateDocID= ScriptProperties.getProperty("EmailTemplateDocId");
var doc = DocumentApp.openById(templateDocID);
  var body = doc.getActiveSection()
var html = "";


var keys = {
name: pattern, 
min: pattern2,
};

for ( var k in keys ) {
body.replaceText("%" + k + "%", keys[k]);

doc.saveAndClose();
html = getDocAsHtml(docId);
DocsList.getFileById(docId).setTrashed(true);

return html;

var emailaddress="albdominguez25@gmail.net";
var sub="Subject1";

MailApp.sendEmail(emailaddress,sub, {htmlBody: body});}}
4

1 回答 1

0

您可能希望通过将文档中的正文读取到变量中来更改代码,对变量进行替换并将其插入到您的电子邮件中。例如:

function gsnot() {
  var emailaddress = "albdominguez25@gmail.net";
  var sub = "New Subject";
  var pattern  = Browser.inputBox("Enter your name:");
  var pattern2 = Browser.inputBox("Enter the minutes:");
  var templateDocID = ScriptProperties.getProperty("EmailTemplateDocId");
  var doc  = DocumentApp.openById(templateDocID);
  var body = doc.getText();
  var replacement;
  var k;

  var keys = {
    name: pattern, 
    min:  pattern2
  };

  for (k in keys) {
    if (keys.hasOwnProperty(k)) {
      replacement = new RegExp("%" + k + "%",'g');
      body = body.replace(replacement, keys[k]);
    }
  }
  MailApp.sendEmail(emailaddress,sub, '', {htmlBody: body});
}

几点注意事项:

  • 将所有 var 语句放在函数的开头是一种很好的形式
  • 当您使用 for-in(例如 for (k in keys) )时,它会返回对象的所有属性。你只想要你分配的那些。这就是原因: for (k in keys)
  • 您为每个属性发送了邮件,我相信您希望它在 for-in 循环之外发送,因此仅在所有替换完成后才发送。
  • 使用 replace(),您需要创建一个设置为全局的正则表达式对象,否则它只会替换模式的第一个实例(您有两次名称)。
  • 在 sendEmail() 的参数中,即使您使用 htmlBody 选项,您也需要指定纯文本正文。我使用了空引号''。
于 2012-10-29T10:14:51.100 回答