使用googlescript自动通过电子邮件发送已删除的行

时间:2019-04-08 08:49:16

标签: google-apps-script google-sheets

我有一个如下所述的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++;
    }
  }
}

我想将删除的行的详细信息发送到特定的电子邮件ID,采用以下提到的格式。

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

1 个答案:

答案 0 :(得分:0)

希望,以下代码将为您提供帮助:

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);
}

我们在删除行时保留报告数组。最后,我们加入了double数组以使纯文本通过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]
  });

我们使用了现成的 body 纯文本,并且仅将其与适当的mime类型一起包装。