首页 > 解决方案 > Google 表格中的 Google 脚本编辑器 - 接受或拒绝电子邮件

问题描述

我在 Google Sheets 中使用 Google Script Editor App Script V8 并使用 Google Forms 获取内容。我先编写了测试代码,看看它是如何工作的,然后再继续使用它并与实际信息一起使用。我使用了以下教程https://www.youtube.com/watch?v=eduG0XZ9mDs。在“作为服务发布”的步骤中,我使用了PublishDeploy as a Web App,我能够创建提供的 url 并输入它,但它不是视频中的格式,即文档,相反,它提供了代码中提供的脚本 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
}

在电子邮件中单击“接受”或“拒绝”按钮后的图像

标签: google-apps-script

解决方案


这个改装怎么样?

为了删除您当前的错误消息,我认为在您的脚本中,需要对查询参数的链接进行一些修改。

从:

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;

笔记:

  • 顺便说一句,当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。

  • UiApp已被弃用。参考另外,请注意这一点。如果要显示'<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);

笔记:

当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。


推荐阅读