Google Script Editor в Google Sheets - принять или отклонить электронную почту - PullRequest
1 голос
/ 13 апреля 2020

Я использую Google Script Editor App Script V8 в Google Sheets и получаю контент с помощью Google Forms. Сначала я написал тестовый код, чтобы посмотреть, как он будет работать, прежде чем использовать его с реальной информацией. Я использовал следующий урок https://www.youtube.com/watch?v=eduG0XZ9mDs. На этапе «Публикация как услуга» я использовал Publi sh, Развертывание как веб-приложение , и я могу создать предоставленный URL-адрес и ввести его, но он не в формате, как в видео, которое является do c, вместо этого он предоставляет URL сценария, как предусмотрено в коде. Код запускается и отправляет электронное письмо, но как только вы нажмете «Принять» или «Отклонить», он не откроет документ и не отметит подтверждение. Я получаю сообщение об ошибке, как показано на рисунке под кодом.

function sendEmail(e) {

var email = e.values[2];  
var town = e.values[1];
var appemail = e.values[3];

var url ='https://script.google.com/macros/s/AKfycby8nLTy_qLYs2VIpv_pS1MF6mE1ZeVcYgrQN_6_6ewW95emGU_P/exec';

var approve = url + '&approval=true' + '&reply='+email;
var reject = url + '&approval=false' + '&reply='+email;

var html = "<body>"+
              "<h2>This is a test.</h2>"+
                town + " is where I am from!"+
                  "<p></p>"+ 
                "<a href ="+ approve +">Approve</a>"+"<br />"+
                "<a href ="+ reject +">Reject</a>"+"<br />"+
            "</body>";

  MailApp.sendEmail(appemail, "Approval Request", "Why no html?", {htmlBody: html});
}

function doGet(e) {

  var answer = (e.parameter.approval == 'true') ? 'You are from Trujillo Alto' : 'Try again';

  MailApp.sendEmail(e.parameter.reply, "Trujillo Alto', 'You are from "+ answer);

  var app = UiApp.createApplication();
  app.add(app.createHTML('<h2>An email was sent to '+ e.parameter.reply + answer ));
  return app
}

Изображение после нажатия кнопки «Принять» или «Отклонить» в электронном письме

1 Ответ

1 голос
/ 13 апреля 2020

Как насчет этой модификации?

Чтобы удалить ваше текущее сообщение об ошибке, я подумал, что в вашем скрипте необходимо изменить ссылку параметров запроса.

От :

var approve = url + '&approval=true' + '&reply='+email;
var reject = url + '&approval=false' + '&reply='+email;

Кому:

var approve = url + '?approval=true' + '&reply='+email;
var reject = url + '?approval=false' + '&reply='+email;

Примечание:

  • Кстати, когда вы изменили скрипт для веб-приложений, пожалуйста, переустановите его веб-приложения как новая версия. Таким образом, последний скрипт отражается на веб-приложениях. Пожалуйста, будьте осторожны с этим.
  • UiApp уже устарел. Ref Также, пожалуйста, будьте осторожны с этим. Если вы хотите отобразить '<h2>An email was sent to '+ e.parameter.reply + answer, измените его следующим образом.

    • От:

      var app = UiApp.createApplication();
      app.add(app.createHTML('<h2>An email was sent to '+ e.parameter.reply + answer ));
      return app
      
    • До:

      return HtmlService.createHtmlOutput('<h2>An email was sent to '+ e.parameter.reply + answer);
      

Если это не было прямым решением вашей проблемы, я приношу свои извинения.

Добавлено:

О сообщении об ошибке Exception: The parameters (String,String) don't match the method signature for MailApp.sendEmail. (line 26, file "Code"), измените, пожалуйста, следующим образом.

В вашем сценарии "Trujillo Alto', 'You are from "+ answer неверно. В этом случае, пожалуйста, измените на "Trujillo Alto", "You are from "+ answer.

С:

MailApp.sendEmail(e.parameter.reply, "Trujillo Alto', 'You are from "+ answer);

Кому:

MailApp.sendEmail(e.parameter.reply, "Trujillo Alto", "You are from "+ answer);

Примечание:

  • При изменении сценария для веб-приложений повторно разверните веб-приложения как новую версию. Таким образом, последний скрипт отражается на веб-приложениях. Пожалуйста, будьте осторожны с этим.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...