google-apps-script - Google 表格中的 Google 脚本编辑器 - 接受或拒绝电子邮件
问题描述
我在 Google Sheets 中使用 Google Script Editor App Script V8 并使用 Google Forms 获取内容。我先编写了测试代码,看看它是如何工作的,然后再继续使用它并与实际信息一起使用。我使用了以下教程https://www.youtube.com/watch?v=eduG0XZ9mDs。在“作为服务发布”的步骤中,我使用了Publish,Deploy 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
}
解决方案
这个改装怎么样?
为了删除您当前的错误消息,我认为在您的脚本中,需要对查询参数的链接进行一些修改。
从:
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 应用程序中。请注意这一点。
推荐阅读
- arrays - 如果在 React 中同时选择了 Stadium & Mymatches 过滤器,如何一起应用?
- windows - 无法在 Windows 2008 R2 上加载任何驱动程序,VS 2019 中的示例项目导致即时蓝屏
- python - 使用用户代理来防止验证码并启用 javascript
- http - 如何使用 HTTP POST 获得重定向
- azure - 尝试使用 MSI 扩展 Azure SQL DB 以获取未授权执行操作的身份
- amazon-web-services - 用于小型项目的轻松自动化 github 服务器部署到 EC2
- javascript - 在 ExtJS 中的数组中查找组平均值
- node.js - 读取文本文件并将数据插入数据库
- c++ - 如何识别从不同子类覆盖的向量类?
- javascript - 如何通过实时从 WebSockets(Socket.io) 获取数据来更新 Plot.js 图以创建时间序列折线图?