Могу ли я отобразить несколько строк из выбранного значения ячейки? - PullRequest
0 голосов
/ 30 мая 2019

Я строю из предыдущего вопроса, который я задал. Моя проблема в том, что я хочу создать автоматизированную систему электронной почты, которая будет уведомлять меня, когда определенная ячейка обновляется относительно определенного человека. См. Можно ли автоматизировать электронную почту с листов Google на основе определенных обновленных столбцов и строк? для моего предыдущего поста.

У меня есть код, и он отлично работает. Однако теперь я хочу показать еще один столбец из отредактированной строки.

Есть ли способ отобразить другой столбец из этой строки? Как если бы X12 был отредактирован. Могу ли я также показать B12 и H12. Таким образом, он отображает мой идентификатор элемента управления, а также моего владельца элемента управления?

function sendNotification(e){
  var ss = e.source.getSheetByName('Datasheet');
  var cell = e.range.getA1Notation();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var cellvalue = e.range.getValue();
  var subject = 'SUBJECT'+ ss.getSheetName();
  var name = ss.getRange(row, 9).getValue(); //get column 9 for current row
  var ControlID = e.col(2).getvalue();


 if (name === 'NAME' && (col === 23 || col === 24 || col === 31 || 
col === 32) === true) {

MailApp.sendEmail({
  to: "EMAIL",
  subject: subject,
  htmlBody: "<br><br>"+
  "The following cell has been updated. <br><br>"+
  "<font size=\"2.5\" color=\"black\"><b> Cell: </b></font>" +
  cell + "<br><br>" + "Control ID: " + col +
  "<br>Update: " + cellvalue + "<br>" + 
  "<br><br>Thank you. <br>"
})
} }

Таким образом, в письме будет указано: если бы X12 был обновленной ячейкой

Следующий элемент управления был обновлен B12. Владелец H12

Обновленное значение ячейки = X12

Я могу отформатировать, как это выглядит, но не могу понять, как отобразить ту же строку, но другой столбец обновленного значения.

1 Ответ

0 голосов
/ 31 мая 2019

Я снова - да, это вполне возможно.Все, что вам нужно сделать, это передать переменную row в getRange() и использовать номер столбца, из которого вы пытаетесь получить значения.

Этот скрипт должен помочь.

function sendNotification(e){
  var ss = e.source.getSheetByName('Datasheet');
  var cell = e.range.getA1Notation();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var cellValue = e.range.getValue();
  var subject = 'SUBJECT'+ ss.getSheetName();
  var name = ss.getRange(row, 9).getValue(); //get column 9 for current row


  if (name === 'NAME' && (col === 23 || col === 24 || col === 31 || col === 32) === true) {
    var control = ss.getRange(row, 2).getValue(); //get value for column B in current row
    var owner = ss.getRange(row, 8).getValue();   //get value for column H in current row

    MailApp.sendEmail({
      to: "EMAIL",
      subject: subject,
      htmlBody: "The following cell has been updated:<br>"+
      "<font size=\"2.5\" color=\"black\"><b> Cell: </b></font>" + cell + 
      "<br><br>" + "The following control was updated: " + control + ", the owner is: " + owner +
      "<br>Update: " + cellValue + "<br>" + 
      "<br><br>Thank you. <br>"
    });
  } 
}

Все, что я сделал, это добавил две переменные, используя getRange(), как я упоминал ранее:

var control = ss.getRange(row, 2).getValue(); //get value for column B in current row
var owner = ss.getRange(row, 8).getValue();   //get value for column H in current row

Как только вы получите var control и var owner, вы можете использовать этив своем теле письма я также добавил это в скрипт выше.Вы можете поиграть с форматированием, но я основал его на шаблоне, который вы указали в своем вопросе.Письмо должно выглядеть примерно так ( примечание: 'b4' и 'h4' - это просто примеры значений, которые я ввел в саму ячейку ):

Screenshot of email example

Надеюсь, это поможет достичь вашей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...