[英]onEdit trigger to send email in google sheets
我的能力有限,請耐心等待。 我有以下任務。 我的第一個選項卡有學生姓名、時間戳和位置的日志。 我編寫了一個腳本,當最后一列輸入“指導顧問”時觸發 onEdit email。我正在嘗試更改腳本,以便可以執行以下任務。 我希望在將特定學生的姓名輸入第 1 列時觸發 onEdit email。但是,我不想每次都輸入腳本並鍵入我想要/需要觸發 email 的學生姓名列表。 我的思考過程是,我希望能夠有一個單獨的選項卡,其中包含我可以定期更新的名稱列表,並且當第 1 列中的單元格值與另一個選項卡中的名稱匹配時,它會觸發 email on那個編輯。
這是我的工作表https://docs.google.com/spreadsheets/d/1JiZXEtB3-B0C10TEy2CIFjdckhH3THNZaVo7lVsIg9k/edit?us的 url
這是迄今為止我的腳本的代碼,它在“指導顧問”上觸發 email 我知道它不是那么干凈。
function emailonEdit(e) {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// EVENT VARIABLES
let range = e.range;
let row = e.range.getRow();
let col = e.range.getColumn();
let cellValue = sheet.getActiveCell().getValue();
let studentName = sheet.getRange(row,1).getValue();
let user = Session.getActiveUser().getEmail();
let cellLocation = sheet.getActiveCell().getA1Notation();
let url = "https://docs.google.com/spreadsheets/d/1z7j1qB6JJ3q6IzGn8eL1R4-hJs8-GqMXlu9NpiakUts/edit#gid=0"
if ( col == 6 && cellValue == "Guidance Counselor") {
// Browser.msgBox('It works');
MailApp.sendEmail(
'fayj@bathwildcats.org',
studentName + ' enroute to GUIDANCE!',
url + '&range=' + cellLocation
);
}
if ( col == 6 && cellValue == "Guidance Counselor") {
// Browser.msgBox('It works');
MailApp.sendEmail(
'jimfay55@icloud.com',
studentName + ' enroute to GUIDANCE!',
url + '&range=' + cellLocation
);
};
if ( col == 6 && cellValue == "Guidance Counselor") {
// Browser.msgBox('It works');
MailApp.sendEmail(
'NavianceStudent2022@gmail.com',
studentName + ' enroute to GUIDANCE!',
url + '&range=' + cellLocation
);
};
}
function emailonEdit(e) {
const sh = e.range.getSheet()
const lsh = e.source.getSheetByName("student name list");
const list = lsh.getRange(2,1,lsh.getLastRow() - 1).getDisplayValues().flat();
let studentName = sh.getRange(e.range.rowStart,1).getValue();
let user = Session.getActiveUser().getEmail();
let cellLocation = e.range.getA1Notation();
let url = "https://docs.google.com/spreadsheets/d/1z7j1qB6JJ3q6IzGn8eL1R4-hJs8-GqMXlu9NpiakUts/edit#gid=0"
if ( e.range.columnStart == 6 && ~list.indexOf(studentName) && e.value == "Guidance Counselor") {
MailApp.sendEmail('fayj@bathwildcats.org,NavianceStudent2022@gmail.com,jimfay55@icloud.com',studentName + ' enroute to GUIDANCE!',url + '&range=' + cellLocation );
}
}
首先,您可以使用.toString()
和.split()
函數將學生列表從二維轉換為一維。 之后,您可以使用.includes()
function 檢查學生姓名是否包含在您的列表中。
function emailonEdit(e) {
var url = "https://docs.google.com/spreadsheets/d/1z7j1qB6JJ3q6IzGn8eL1R4-hJs8-GqMXlu9NpiakUts/edit#gid=0";
var cellLocation = e.range.getA1Notation();
var dataRange = e.range;
var dataColumn = dataRange.getColumn();
var dataRow = dataRange.getLastRow();
var studentName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log").getRange(dataRow,1).getValue();
var studentListSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
var studentList = studentListSheet.getRange(2,1,studentListSheet.getLastRow()-1,1).getValues();
var checkName = studentList.toString().split(",").includes(studentName); /**returns true if the student name is included in the List*/
(dataColumn == 6 && checkName && e.value == "Guidance Counselor") ? MailApp.sendEmail("fayj@bathwildcats.org, jimfay55@icloud.com, NavianceStudent2022@gmail.com", studentName + ' enroute to GUIDANCE!', url + '&range=' + cellLocation) : SpreadsheetApp.getActiveSpreadsheet().toast("sending failed");
}
如果不滿足觸發器的條件,我還添加了一個toast()
function 來發送彈出通知。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.