#google-apps-script #google-sheets-api #google-apps
Вопрос:
Я пытаюсь создать пользовательское меню в 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);
}
Любая помощь будет очень признательна!
Ответ №1:
Похоже, я все понял. Я только что создал еще один пункт меню и другую функцию с Норэльпи как ложным. Вот код.
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);
}
}