google-apps-script - 如何从 Google 表格自定义菜单将 MailApp noReply 从 true 设置为 false?
问题描述
我正在尝试在 Google 表格中创建一个自定义菜单,以关闭 noReply 并向学生发送大量电子邮件。我的群发电子邮件功能运行良好。但我想添加更改选项
{name:"Automatic Emailer", replyTo: 'email@gmail.com', noReply: true});
to
{name:"Automatic Emailer", replyTo: 'email@gmail.com', noReply: false});
我希望能够从自定义菜单中更改它
这是自定义菜单脚本。
function onOpen(e) {
var menu = SpreadsheetApp.getUi()
.createMenu('Mass Student Email')
.addItem('Send Mass Email', 'checkResponse')
.addToUi();
}
function checkResponse() {
var ui = SpreadsheetApp.getUi();
var noReply = ui.alert('Remove NoReply', ui.ButtonSet.YES_NO);
var response = ui.alert('Are you sure you want to proceed?', ui.ButtonSet.YES_NO);
if (noReply == ui.Button.YES) {
noReplyOff();
if (response == ui.Button.YES) {
sendEmails();
} else {
Logger.log("The user wasn't sure.");
}
}
我试过创建一个函数,但我是新手,我很难弄清楚如何编写这个函数。
function noReplyOff(){
MailApp.sendEmail(noReply:true).setValue(noReply:false);
}
任何帮助将不胜感激!
解决方案
好像想通了 我刚刚创建了另一个菜单项和另一个函数,其中 noRelpy 为 false。这是代码。
function basMenu() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('Send Student');
menu.addItem('Mass Email', 'checkResponse');
menu.addSeparator();
menu.addItem('Remove NoReply', 'noReply')
menu.addToUi();
}
function onOpen(){
basMenu();
}
function checkResponse() {
var ui = SpreadsheetApp.getUi();
var response = ui.alert('Send emails from email list?', ui.ButtonSet.YES_NO);
if (response == ui.Button.YES) {
sendEmails();
} else {
Logger.log("The user wasn't sure.");
}
}
function noReply(){
var ui = SpreadsheetApp.getUi();
var noReplyOff = ui.alert('Remove noReply from email?', ui.ButtonSet.YES_NO);
if (noReplyOff == ui.Button.YES) {
sendNoReplyEmails();
}
}
function sendEmails() {
var main = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GED").activate();
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();
var mt = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateSubject = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateText =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email").getRange(3,
2).getValue();
var quotaLeft = MailApp.getRemainingDailyQuota();
Logger.log(quotaLeft);
if((lr-1) > quotaLeft){
Browser.msgBox("Remaining email quota: " + quotaLeft);
} else
for (var i = 2;i<=lr;i++){
var currentFirstName = ss.getRange(i, 1).getValue();
var currentLastName= ss.getRange(i, 2).getValue();
var currentEmail = ss.getRange(i, 3).getValue();
var currentUID = ss.getRange(i, 4).getValue();
var currentPhone = ss.getRange(i, 5).getValue();
var currentProgram = ss.getRange(i, 6).getValue();
var subjectLine = mt.getRange(1, 2).getValue();
var nameLine = mt.getRange(2, 2).getValue();
var messageBody = templateText.replace("{{First}}",currentFirstName).replace("
{{Last}}",currentLastName).replace("{{UID}}",currentUID).replace("
{{Phone}}",currentPhone)
.replace("{{Email}}",currentEmail).replace("{{Program}}",currentProgram);
MailApp.sendEmail(currentEmail, subjectLine, messageBody, {name:"Automatic Emailer",
replyTo: 'email@yahoo.com', noReply: true});
SpreadsheetApp.getActiveSheet().getRange(i, 7).setValue('Sent');
SpreadsheetApp.getActiveSheet().getRange(i, 8).setValue(new Date);
}
}
function sendNoReplyEmails() {
var main = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GED").activate();
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();
var mt = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateSubject = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
var templateText =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email").getRange(3,
2).getValue();
var quotaLeft = MailApp.getRemainingDailyQuota();
Logger.log(quotaLeft);
if((lr-1) > quotaLeft){
Browser.msgBox("Remaining email quota: " + quotaLeft);
} else
for (var i = 2;i<=lr;i++){
var currentFirstName = ss.getRange(i, 1).getValue();
var currentLastName= ss.getRange(i, 2).getValue();
var currentEmail = ss.getRange(i, 3).getValue();
var currentUID = ss.getRange(i, 4).getValue();
var currentPhone = ss.getRange(i, 5).getValue();
var currentProgram = ss.getRange(i, 6).getValue();
var subjectLine = mt.getRange(1, 2).getValue();
var nameLine = mt.getRange(2, 2).getValue();
var messageBody = templateText.replace("{{First}}",currentFirstName).replace("
{{Last}}",currentLastName).replace("{{UID}}",currentUID).replace("
{{Phone}}",currentPhone)
.replace("{{Email}}",currentEmail).replace("{{Program}}",currentProgram);
MailApp.sendEmail(currentEmail, subjectLine, messageBody, {name:"Automatic Emailer",
replyTo: 'email@yahoo.com', noReply: false});
SpreadsheetApp.getActiveSheet().getRange(i, 7).setValue('Sent');
SpreadsheetApp.getActiveSheet().getRange(i, 8).setValue(new Date);
}
}
推荐阅读
- java - 使用 java.lang.ProcessBuilder 运行 root 命令
- matlab - 如何使用integral2来评估(显然)非向量化函数的积分?
- c# - Asp.Net Core 2.0 HTTP -> Kestrel 上的 HTTPS
- excel - Excel 公式 - 如果 A=1 B=2.......Z=26。如果你在单元格中输入 CAT 它应该显示结果 24
- javascript - 尝试动态创建删除按钮并在javascript中调用删除函数
- javascript - 两个动态呈现但共享相同路由的页面模板
- excel - 关闭表单时如何保存列表框值(多选)?
- c++ - 'strtoll' 和许多其他“不是 'std' 的成员”
- powershell - 无法将非单体脚本模块发布到具有 7 个或更多功能的本地 PowerShell 库
- vue.js - Nuxt.js - 尝试在 asyncData 方法中的失败等待调用中抛出 404 时出现“未定义错误”