Google表格-仅针对选定的表格发送电子邮件/备用邮件

时间:2019-04-12 16:02:34

标签: google-apps-script google-sheets

我有一个工作脚本,当某个列更新时,该脚本会发送电子邮件,但我所在的工作簿中有大量工作表,因此我正在寻找一种仅在某些命名工作表上发送电子邮件更改的方法-例如“系统1”,“数据库2”,“数据库2”。

谢谢

function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var row = sheet.getActiveRange().getRow();
  var column = sheet.getActiveRange().getColumn();
  var colLetter = columnToLetter(column);
  var cellvalue = ss.getActiveCell().getValue().toString();
  var range = sheet.getActiveCell();
  var name = sheet.getRange(range.getRow(), 1).getValue();
  var recipients = "email.com";
  var message = '';
  if(cell.indexOf('N')!=-1){ 
    message = sheet.getRange('F'+ sheet.getActiveCell().getRowIndex()).getValue()
  }
  var subject = 'Update to  ' + sheet.getName() + '';
  var body = ' Hello, An update has been made to the system for ' + sheet.getName() +   ' now updated ' + cellvalue + '  ' + name + '  , Thanks'  ;

  MailApp.sendEmail(recipients, subject, body);
};
function columnToLetter(column) {
  var temp, letter = '';
  while (column > 0)
  {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}

function letterToColumn(letter)
{
  var column = 0, length = letter.length;
  for (var i = 0; i < length; i++)
  {
    column += (letter.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
  }
  return column;
};

function onEdit(e)
{
  var range = e.range;
  var column = range.getColumn();

  if(column == 14)
  {
   // call your send notification function
   sendNotification();
  }
}

function sendToSlack() {
  var timestamp = new Date();

  // custom slack webhook
  // change the XXXXX's to your own slack webhook. Get it from: 
  // https://my.slack.com/services/new/incoming-webhook/
  var url = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX";

  var payload = {
    "channel": "@testing",
    "username": "System",
    "text": "Hello, An update has been made to the  system for " + sheet.getName() +   " now updating " + cellvalue + "   , Thanks  ",
    "icon_emoji": ":inbox_tray:"
  };

  var options = {
    "method": "post",
    "contentType": "application/json",
    "payload": JSON.stringify(payload)
  };

  return UrlFetchApp.fetch(url,options);
}

1 个答案:

答案 0 :(得分:0)

尝试一下:

function onEdit(e)
{
  var shts=["System 1", "Database 2", "Database 2"];
  if(e.range.columnStart==14 && shts.indexOf(e.range.getSheet().getName())>-1) {
   sendNotification();
  }else{
    return;
  }
}