gpt4 book ai didi

javascript - 如何根据谷歌电子表格上更改的单元格发送通知

转载 作者:行者123 更新时间:2023-12-03 12:24:33 25 4
gpt4 key购买 nike

我知道它类似于 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);
}

};

不知道如何实现,请帮忙

我也尝试过这个Send Email when value changes in Google Spreadsheet

最佳答案

您的脚本缺少一个重要功能:您应该记住在发送邮件之前是否已经发送了邮件,否则每次您读取单元格值时都会发送一封邮件。

有很多方法可以实现这一目标,添加带有“邮件已发送”标志的列可能是最常见的,但绝对不是我喜欢的......

这是一个在发送邮件时对单元格进行着色的版本,我选择红色,但当然您可以更改为更离散的颜色。 (我添加了一个记录器,以便您可以轻松查看颜色十六进制代码)

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 或计时器上调用此脚本,这两种方法都可以,这更多的是一个选择问题(除非您绝对需要即时 react )。

关于javascript - 如何根据谷歌电子表格上更改的单元格发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com