【问题标题】:Error in sending Email in Google AppMaker在 Google AppMaker 中发送电子邮件时出错
【发布时间】:2018-11-01 22:45:42
【问题描述】:

我想在用户单击按钮时发送电子邮件通知。该按钮将调用sendEmail(widget) 函数并调用客户端脚本,如下所示:

function sendEmail(widget){

  var item = widget.datasource.item;

  google.script.run
    .withFailureHandler(function(error) {
      console.text = error.message;
    })
   .withSuccessHandler(function(result) {
      console.text = 'succeed';
   })
 .sendEmails(item);
}

然后它将传递item 上的数据源并从服务器脚本调用sendEmails(item) 函数,如下所示:

function sendEmails(item){  

  var to = item.OwnerEmail;

  var subject = 'Please Review';

  var body = 'hello<br/>my name is Muhammad Alif bin Azali';

  MailApp.sendEmail({
      to: to,
      subject: subject,
      htmlBody: body,
      noReply: true
  });
}

但是当我点击按钮时,我得到了以下错误。有什么帮助吗?

【问题讨论】:

  • 您可能没有在项目对象中获得适当的价值。尝试在var to = item.OwnerEmail; 行后添加Logger.log(item.OwnerEmail);
  • D 2018 年 5 月 23 日星期三 14:07:52 GMT+800 muhammadalifazali@airasia.com E 5 月 23 日星期三 14:07:52 GMT+800 2018 因财产非法价值而失败:a跨度>
  • item.OwnerEmail 持有正确的值
  • 如果是同样的问题,请您删除这个 - stackoverflow.com/questions/50462355

标签: javascript gmail-api google-app-maker


【解决方案1】:

看起来您的邮件正文需要转换为 HTML 正文,

这是示例

function sendEmails(item){  

  var to = item.OwnerEmail;

  var subject = 'Please Review';

  var body = 'hello<br/>my name is Muhammad Alif bin Azali'; 
  var template = HtmlService.createTemplate(body);
  var htmlBody = template.evaluate().getContent();


  MailApp.sendEmail({
      to: to,
      subject: subject,
      htmlBody: htmlBody ,
      noReply: true
  });
}

【讨论】:

  • 邮件发送代码是完美的。好像是别的问题。您之前收到过 Appmaker 的邮件吗?
  • 是的,我有。 “item”变量是否传递了正确的值?我不太确定
【解决方案2】:

不幸的是,你不能将任何你想要的作为参数传递给你的服务器函数。与服务器通信有一些limitations

...大多数类型都是合法的,但不是 Date、Function 或 DOM 元素...

...创建循环引用的对象也会失败...

App Maker 的记录肯定违反了这些限制。

有不同的策略来处理这个限制,其中之一是将记录的键作为函数的参数传递。

// Client script
function sendEmail(widget) {
  var item = widget.datasource.item;

  google.script.run
  ...
 .sendEmails(item._key);
}

// Server script
function sendEmails(itemKey) {
  var item = app.models.MyModel.getRecord(itemKey);
  ...
}

【讨论】:

  • 非常感谢 Pavel,现在我明白为什么了,它工作得很好,再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 2012-12-12
相关资源
最近更新 更多