Ошибка при отправке электронной почты в Google AppMaker - PullRequest
0 голосов
/ 23 мая 2018

Я хочу отправить уведомление по электронной почте всякий раз, когда пользователь нажимает кнопку.Кнопка вызовет функцию 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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

К сожалению, вы не можете передать все, что вы хотите, в качестве параметра вашей функции сервера.Связь с сервером имеет некоторые ограничения :

... большинство типов допустимы, но не элемент 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);
  ...
}
0 голосов
/ 23 мая 2018

Похоже, ваше тело письма должно быть преобразовано в тело 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
  });
}
...