Google apps script GoogleSheets-根据单元格匹配对错发送电子邮件
我不经常使用谷歌表单,主要处理谷歌表单的脚本编辑器。我们已经从各种表格中创建了一个数据库,这些表格填写在一个电子表格中,我想根据最近的行更新向特定经理发送电子邮件通知,行更新将从表格提交中更新。下面是我想让它做的: 如果p列中的单元格与“FALSE”匹配:Google apps script GoogleSheets-根据单元格匹配对错发送电子邮件,google-apps-script,google-sheets,gmail,google-sheets-api,spreadsheet,Google Apps Script,Google Sheets,Gmail,Google Sheets Api,Spreadsheet,我不经常使用谷歌表单,主要处理谷歌表单的脚本编辑器。我们已经从各种表格中创建了一个数据库,这些表格填写在一个电子表格中,我想根据最近的行更新向特定经理发送电子邮件通知,行更新将从表格提交中更新。下面是我想让它做的: 如果p列中的单元格与“FALSE”匹配: 发送电子邮件 将收件人字段设置为“director1@gmail.com“如果第J列中的单元格与单词“Building 1”匹配” 将CC字段设置为“manager1@gmail.com如果第I列中的单元格与单词“Department 1”
- 发送电子邮件
- 将收件人字段设置为“director1@gmail.com“如果第J列中的单元格与单词“Building 1”匹配”
- 将CC字段设置为“manager1@gmail.com如果第I列中的单元格与单词“Department 1”匹配
function triggerOnEdit(e)
{
alertManagers(e);
}
function checkClearance(e)
{
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Calculations");
var value = sheet.getRange("P:P").getValue();
var range = sheet.getRange(1, 1, sheet.getLastRow(), 1); //understands spreadsheet
if(range.getColumn() <= 16 &&
range.getLastColumn() >=16 )
{
var edited_row = range.getRow();
var approval = SpreadsheetApp.getActiveSheet().getRange(edited_row,16).getValue();
if(approval == 'FALSE')
{
return edited_row;
}
}
return 0;
}
function alertManagers(e)
{
var clearance_row = checkClearance(e);
if(clearance_row <= 0)
{
return;
}
sendEmailByRow(clearance_row);
}
function sendEmailByRow(row)
{
var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,16).getValues();
var row_values = values[0];
var mail = composeAlertEmail(row_values);
var manageremail='test@gmail.com';
//Uncomment this line for testing
//SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);
MailApp.sendEmail(manageremail,mail.subject,mail.message);
}
function composeAlertEmail(row_values)
{
var name = row_values[6];
var email = "test@gmail.com";
var message = "Good day, \n The following employee does not have clearance to enter the building: "+name+
" email "+email;
var subject = "Employee Not Cleared: "+name+" "
return({message:message,subject:subject});
}
函数triggeroEdit(e)
{
高级管理人员(e);
}
功能检查间隙(e)
{
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet=电子表格.getSheetByName(“计算”);
var值=sheet.getRange(“P:P”).getValue();
var range=sheet.getRange(1,1,sheet.getLastRow(),1);//电子表格
if(range.getColumn()=16)
{
var edited_row=range.getRow();
var approval=SpreadsheetApp.getActiveSheet().getRange(第16行编辑)。getValue();
如果(批准=='FALSE')
{
返回编辑的_行;
}
}
返回0;
}
职能经理(e)
{
var间隙=检查间隙(e);
如果(间隙)\行解决方案:
以下是您正在寻找的内容:
function triggerOnEdit(e) {
sendEmails(e)
}
function sendEmails(e){
const row = e.range.getRow();
const col = e.range.getColumn();
const as = e.source.getActiveSheet();
const subject = "This is the subject of the email";
const body = "This is the body of the email";
const to = "director1@gmail.com";
const cc = "manager1@gmail.com";
if(as.getName() == "Calculations" && col == 16 && as.getRange(row,col).getDisplayValue() == "FALSE") {
if (as.getRange(row,10).getValue()=="Building 1"){
if(as.getRange(row,9).getValue()=="Department 1"){
MailApp.sendEmail({to:to ,subject: subject,body:body,cc:cc});
}
else {
MailApp.sendEmail({to: to,subject: subject,body:body});
}
}
}
}
我假设如果J列与1号楼不匹配,即没有收件人,则不会发送电子邮件
不要忘记将triggeroEdit(e)
添加到当前项目的触发器:
出于文档原因,请接受答案或提供您的反馈,以便修改答案并解决您的问题。只需单击答案左侧的勾选按钮即可。