Google表格点击单元格调用全权限脚本发送订单邮件的实现方法
解决Google表格单行手动触发订单邮件的方案
最优方案:HYPERLINK配合Google Script调用
可以通过HYPERLINK生成可点击的单元格,触发有权限的邮件发送函数,步骤如下:
1. 编写邮件发送脚本
打开表格的脚本编辑器,添加以下代码:
// 发送订单邮件的核心函数,接收行号参数 function sendOrderMail(rowNum) { // 避免行号越界,可根据实际表头行调整(比如表头在第1行,数据从第2行开始) if (rowNum < 2) return; const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const rowData = sheet.getRange(rowNum, 1, 1, sheet.getLastColumn()).getValues()[0]; // 这里根据你的表格列结构,提取订单信息,示例如下: const recipient = rowData[1]; // 假设第2列是收件邮箱 const orderNum = rowData[0]; // 第1列是订单号 const product = rowData[2]; // 第3列是商品名称 // 构建邮件内容 const subject = `订单确认:${orderNum}`; const body = `您好,您的订单 ${orderNum}(商品:${product})已处理完成,详情请查看后续通知。`; // 发送邮件(可添加附件等参数,根据需求调整) MailApp.sendEmail(recipient, subject, body); // 可选:发送后标记该行状态,比如在第4列写入"已发送" sheet.getRange(rowNum, 4).setValue("已发送"); } // 用于首次授权的函数(必须手动运行一次获取权限) function authorizeScript() { // 执行简单操作触发授权流程 SpreadsheetApp.getActiveSpreadsheet().getRange(1,1).getValue(); }
2. 在表格中添加触发链接
在需要显示“发送邮件”按钮的列(比如第5列),输入公式:
=HYPERLINK("javascript:google.script.run.withSuccessHandler(() => {alert('邮件发送成功')}).sendOrderMail("&ROW()&")", "发送订单邮件")
将公式下拉到所有数据行,每行都会生成一个专属的点击链接。
3. 首次授权
点击表格顶部的「扩展程序」→「Apps Script」,打开脚本编辑器后点击运行按钮执行authorizeScript函数,按照提示完成权限授权(需允许脚本访问邮件和表格数据)。
之后回到表格,点击任意一行的「发送订单邮件」链接,即可触发对应行的邮件发送——此方式无权限限制,因为是用户主动点击触发的授权上下文操作。
备选方案:复选框+自定义菜单(处理多行)
如果需要批量处理,可采用复选框配合自定义菜单:
- 在表格首列添加复选框,标记需要发送邮件的行
- 在脚本中添加菜单函数:
function onOpen() { SpreadsheetApp.getUi().createMenu("订单操作") .addItem("发送选中订单邮件", "sendSelectedOrders") .addToUi(); } function sendSelectedOrders() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const dataRange = sheet.getDataRange(); const data = dataRange.getValues(); for (let i = 1; i < data.length; i++) { // 跳过表头行 if (data[i][0] === true) { sendOrderMail(i+1); // 调用之前的sendOrderMail函数,行号为i+1(数组从0开始) // 可选:取消复选框选中状态 sheet.getRange(i+1, 1).setValue(false); } } }
打开表格时会自动生成「订单操作」菜单,勾选复选框后点击菜单选项即可批量发送。
内容的提问来源于stack exchange,提问作者Robbit
相关产品推荐
相关产品推荐

