我知道它类似于 email notification if cell is changed
但我想做以下事情:
在A栏中,我有提醒名称,B列我有电话,列F有状态
状态值为1,2,3,4,5
所以基本上我想在F列变为4,5时发送一封电子邮件,其中包含A栏和B栏的信息。
示例:提醒名称刚刚更改为状态4,请给他们打电话:电话号码
function checkReminder() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
var sheet = spreadsheet.getActiveSheet();
var lastRow = sheet.getLastRow();
var startRow = 2;
var range = sheet.getRange(2,5,lastRow-startRow+1,1 );
var numRows = range.getNumRows();
var sV = range.getValues();
range = sheet.getRange(2, 1, lastRow-startRow+1, 1);
var reminder_info_values = range.getValues();
var warning_count = 0;
var msg = "";
for (var i = 0; i <= numRows - 1; i++) {
var statusC = sV[i][0];
if(statusC > 3) {
var reminder_name = reminder_info_values[i][0];
msg = msg + "The reminder: "+reminder_name+" changed status to "+statusC +" ";
warning_count++;
}
}
if(warning_count) {
MailApp.sendEmail("email@email.com",
"CC Changed status of "+ reminder_name, msg);
}
};
我不知道如何让它发挥作用,请帮助
答案 0 :(得分:1)
您的脚本缺少一项重要功能:您应该记住在发送邮件之前是否已经发送过邮件,否则每次读取邮件时都会发送邮件。
有很多方法可以实现这一点,添加一个带有“邮件发送”标志的列可能是最常见但绝对不是我喜欢的那个......
这是一个在发送邮件时为单元格着色的版本,我选择红色但当然可以更改为更离散的颜色。 (我添加了一个记录器,因此您可以轻松地看到十六进制代码的颜色)
function checkReminder() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
var sheet = spreadsheet.getActiveSheet();
var lastRow = sheet.getLastRow();
var startRow = 2;
var range = sheet.getRange(2,5,lastRow-startRow+1,1 );
var numRows = range.getNumRows();
var sV = range.getValues();
var bGColors = range.getBackgroundColors();// get range background colors
var range_reminder = sheet.getRange(2, 1, lastRow-startRow+1, 1);
var reminder_info_values = range_reminder.getValues();
var warning_count = 0;
var msg = "";
for (var i = 0; i <= numRows - 1; i++) {
var statusC = sV[i][0];
Logger.log(bGColors[i][0]);
if(statusC > 3 && bGColors[i][0] != '#ff0000') { // if not already sent
var reminder_name = reminder_info_values[i][0];
bGColors[i][0] = '#ff0000';
msg = msg + "The reminder: "+reminder_name+" changed status to "+statusC +" ";
warning_count++;
}
}
range.setBackgroundColors(bGColors);// update sheet with colors
if(warning_count>0) {
MailApp.sendEmail("email@email.com",
"CC Changed status of "+ reminder_name, msg);
}
};
您可以设置一个触发器,在onEdit或定时器上调用此脚本,两种方法都可以工作,这是一个选择问题(除非您绝对需要立即反应)。
答案 1 :(得分:0)
您可以使用onEdit()
如果值在F列中,现在为4或5,则发送电子邮件。
https://developers.google.com/apps-script/understanding_events