Автоматически отправлять по электронной почте удаленные строки, используя googlescript - PullRequest
1 голос
/ 08 апреля 2019

У меня есть лист Google, как упомянуто ниже.

Col1         Col2        Col3 
ABC          DEF         Test
ABC          DEF         Pending
ABC          DEF         Final
ABC          DEF         Final
ABC          DEF         Reject
ABC          DEF         Test

Я использую приведенный ниже код для удаления строк, где Col3 содержит значение типа «Окончательный» или «Отклонить».

function deleteSelectedRows() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Test');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var d=0;
  for(var i=1;i<vA.length;i++) {
    if(vA[i][2].toString().toLowerCase()=="final" || vA[i][2].toString().toLowerCase()=="reject")  {
      sh.deleteRow(i-d+1)
      d++;
    }
  }
}

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

Col1      Col2       Col3 
ABC       DEF        Final
ABC       DEF        Final
ABC       DEF        Reject

1 Ответ

0 голосов
/ 08 апреля 2019

Надеюсь, вам поможет следующий код:

function deleteSelectedRows() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Test');
  var rg = sh.getDataRange();
  var vA = rg.getValues();
  var d = 0;
  var report = [vA[0]];
  for(var i = 1; i < vA.length; i++) {
    var key = vA[i][2].toString().toLowerCase();
    if(key == "final" || key == "reject")  {
      sh.deleteRow(i - d + 1);
      d++;
      report.push(vA[i]);
    }
  }
  report = report.map(function(line) {
    return line.join("\t");
  });
  var body = report.join("\n");
  MailApp.sendEmail('abc@gmail.com', 'Deleted Rows', body);
}

Мы сохраняем массив отчетов при удалении строк. В конце мы соединяем двойной массив, чтобы сделать простой текст для отправки через MailApp .

Дополнительный вопрос: как отправить это как вложение? Да, это тоже возможно. Форматы CSV или Excel требуют больше усилий, но здесь мы можем показать очень простой пример с простым вложением TSV, чтобы понять путь. Давайте изменим последнюю строку кода следующим образом:

  var blob = Utilities.newBlob(body, "text/tab-separated-values", '1.tsv');
  MailApp.sendEmail('abc@gmail.com', 'Deleted Rows', "See attachment", {
    attachments: [blob]
  });

Мы использовали готовый текст простой текст и упаковали его только с соответствующим типом пантомимы.

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