javascript - 在 Google AppMaker 中发送电子邮件时出错

标签 javascript gmail-api google-app-maker

我想在用户点击按钮时发送电子邮件通知。该按钮将调用 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
  });
}

但是当我点击按钮时却出现了以下错误。有帮助吗?

enter image description here

最佳答案

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

...most types are legal, but not Date, Function, or DOM element...

...objects that create circular references will also fail...

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

关于javascript - 在 Google AppMaker 中发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479987/

相关文章:

javascript - 在javascript中显示缩略图中的大图片

javascript - Chrome 扩展程序和 gmail.js 阻止访问 google api

hyperlink - 在浏览器窗口中打开在 Gmail API 中创建的 Gmail 草稿

google-app-maker - 尝试对关系数据源的列进行总计

mysql - 如何创建 View ?

javascript - 如何让基于数组的动画 div 一次出现一个,可能只使用 CSS3?

javascript - AngularJS 和异步操作

javascript - 从nodejs中的请求路由获取其余路径

python - 刷新错误('invalid_grant: Token has been expired or revoked.')谷歌API

google-app-maker - 在哪里可以找到所有应用制作工具按钮图标?