google-apps-script - 当我在 Gmail 正文(客户端)中点击超链接时,如何在服务器端脚本中调用该函数:Google App Script?
问题描述
- 我通过以 HTML 正文类型发送超链接来在 Gmail 中发送批准请求。- 成功的
- 我没有调用页面,而是引用了链接来调用服务器端脚本中的函数。-成功的
一旦电子邮件到达收件人,它就会自动调用该函数。- 失败。假设当收件人单击“批准”超链接时,只有应该触发的功能。
我创建了一个 index.html,使用了 HTMLService.createoutputfromfile 和其他 HTMLService 功能,它失败了。我不知道如何建立从客户端到服务器端脚本的通信;从 Gmail 到 Google App 脚本。
谷歌应用脚本
function sendEmailToApproverOne(emailAdd, action, trackSheet,rowNumber){
var form_Name = FormApp.getActiveForm().getTitle();//Get the Name of this specific Form
var btnAction = "";//---gets the button name(Approve/Acknowledge) when the recipient receives the email ----
if(action == "Approval"){
btnAction = "Approve";
}
else if(action == "Acknowledgement"){
btnAction = "Acknowledge";
}
var message = getMessage(btnAction,trackSheet,rowNumber);//----calls a function to create the email body----
GmailApp.sendEmail(emailAdd, form_Name +': For your perusal to '+ btnAction , '', {htmlBody:message});
}
function getMessage(buttonLabel,trackSheet,rowNumber) {
var htmlOutput = HtmlService.createHtmlOutputFromFile('emailBody');
var message = htmlOutput.getContent()
message = message.replace("##LINK##", pressedApprove(trackSheet,rowNumber));
message = message.replace('##BUTTONLABEL##',buttonLabel);
return message;
}
//This function: pressedApprove() is triggered when the Approver presses approve in Email button
function pressedApprove(trackSheet,rowNumber){
Logger.log("This button is clicked");
//====some code to do with tracksheet and rownumber.
}
<a href="##LINK##" id="myLink" >##BUTTONLABEL##</a>
预计会看到函数:pressedApprove() 仅在 Gmail 内点击超链接时触发。不希望每次运行代码发送 Gmail 时都会自动调用。
如何设置该功能仅在 Gmail 正文中按下超链接时触发的限制。
解决方案
发布您的网络应用程序:
- 以“我”的身份运行
- 访问:任何人,包括。匿名的
使用查询参数打开您的网络应用程序
message = message.replace(
'##LINK##',
ScriptApp.getService().getUrl() +
encodeURI(
'?func=pressedApprove&trackSheet=' +
trackSheet.getId() + //use a unique id string of sheet
'&rowNumber=' +
rowNumber
)
);
- 用于
doGet()
接收超链接并运行所需功能:
function doGet(e){
var params = e.parameter;
if(params.func === 'pressedApprove'){
return pressedApprove(params.trackSheet, params.rowNumber);
}
}
推荐阅读
- tensorflow - TensorFlow 对象检测:导出推理图
- sas - SAS:用新级别“其他”替换变量中的稀有级别
- mongodb - 在 Mongo DB 的嵌套地图对象模式中选择特定字段
- php - 如何根据价值创建等级价格金额
- java - 测试后将内容写入 TemporaryFolder 并删除文件
- jenkins - 如何将 jenkins 构建日志作为附件发送到松弛通道和 JIRA
- javascript - 将 JS 变量保存到从 PHP 传递的本地存储中
- keras - 自定义损失 - keras
- c# - 生成了文件名列表但没有文件路径
- python - 如何在 Django 中发送 app_name、method_name url 命名空间