在一个单元格中输入特定文本时发送单独的列信息

时间:2017-05-15 13:38:03

标签: google-apps-script google-sheets

我有一份工作跟踪电子表格,其中A列表示作业编号和列#34;我"表示作业状态,可以从下拉列表中选择不同的阶段。

我希望在选项"已完成"时将电子邮件发送给一位收件人。被选中用于下拉,也告诉他们相同的工作号码。无论我尝试什么,我们都只能让它适用于对#34; I"的任何更改,而不仅仅是"完成"。任何帮助将不胜感激!

function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell().getA1Notation();
  var row = sheet.getActiveRange().getRow();
  var cellvalue = ss.getActiveCell().getValue().toString();
  var recipients = "xxx@xxx.co.uk";
  var message = '';
  if(cell.indexOf('I')!=-1){ 
    message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue()
  }
  var subject = 'Job List: '+sheet.getName() 'has been updated' ;
  var body = sheet.getName() + ' has been updated.\n\n New Job Status: ' + cellvalue + '.\n\nFor Job Number: ' + message + '\n\nVisit ' + ss.getUrl() + ' to view the changes on row: ' + row + '.';
  MailApp.sendEmail(recipients, subject, body);
};

1 个答案:

答案 0 :(得分:0)

您的代码未在任何位置检查单元格值。我修改了您的代码,并更改了逻辑,以便代码首先检查列字母" I",如果列字母" I"没有编辑,然后停止代码。

然后,如果代码超过该测试,则下一个文本是已编辑单元格的值。运行不需要运行的代码行是没有意义的,如果它不是列"我"或正确的价值。所以我改变了几行代码的顺序。

function sendNotification() {
  var activeCellAddress,cellvalue,message,row,sheet,ss;

  ss = SpreadsheetApp.getActiveSpreadsheet();
  sheet = ss.getActiveSheet();

  activeCellAddress = ss.getActiveCell().getA1Notation();

  if (activeCellAddress.indexOf('I') === -1){ //If the cell edited is not in column I then quit here
    return;
  }

  cellvalue = ss.getActiveCell().getValue().toString();

  if (cellvalue !== "complete") {//The the cell value is not the string complete then quit
    return;
  }

  row = sheet.getActiveRange().getRow();

  var recipients = "xxx@xxx.co.uk";

  message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue();

  var subject = 'Job List: ' + sheet.getName() + 'has been updated';
  var body = sheet.getName() + ' has been updated.\n\n New Job Status: ' + cellvalue + '.\n\nFor Job Number: ' + message + '\n\nVisit ' + ss.getUrl() + ' to view the changes on row: ' + row + '.';

  MailApp.sendEmail(recipients, subject, body);
};

这行代码中也有错误:

var subject = 'Job List: ' + sheet.getName() + 'has been updated';

缺少一个加号。