Автоматически отправлять удаленные строки по электронной почте с помощью googlescript

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

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

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

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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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('[email protected]', 'Deleted Rows', body);
}

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

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

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

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

не могу отправить вложение в csv или excel??

Viper 08.04.2019 12:27

Другие вопросы по теме