首页 > 解决方案 > 如何从 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);

}

任何帮助将不胜感激!

标签: google-apps-scriptgoogle-sheets-apigoogle-apps

解决方案


好像想通了 我刚刚创建了另一个菜单项和另一个函数,其中 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);
    
    
}

}

推荐阅读