需要使用Google Apps脚本编辑doc

时间:2012-10-26 19:52:41

标签: google-apps-script

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

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});}}

1 个答案:

答案 0 :(得分: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(),您需要创建一个设置为global的正则表达式对象 或者它只会替换模式的第一个实例(你有两次名字)。
  • 在sendEmail()的参数中,即使使用htmlBody选项,也需要指定纯文本正文。我用空引号''。