当前位置: 首页 > 知识库问答 >
问题:

用google script发送多行电子邮件(google Sheet)

朱硕
2023-03-14

我是新的剧本生活。我想发送一封基于多个单元格值的电子邮件。电子邮件是工作的,但有时我只有1个PO发送,所以我的当前代码将发送PO1+9空行,我的电子邮件现在是超长的。

function mailtest() {

  var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
  var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
  var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
  var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
  var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
  var PO1 = SpreadsheetApp.getActiveSheet().getRange('L15').getValue();
  var PO2 = SpreadsheetApp.getActiveSheet().getRange('L16').getValue();
  var PO3 = SpreadsheetApp.getActiveSheet().getRange('L17').getValue();
  var PO4 = SpreadsheetApp.getActiveSheet().getRange('L18').getValue();
  var PO5 = SpreadsheetApp.getActiveSheet().getRange('L19').getValue();
  var PO6 = SpreadsheetApp.getActiveSheet().getRange('L20').getValues();
  var PO7 = SpreadsheetApp.getActiveSheet().getRange('L21').getValues();
  var PO8 = SpreadsheetApp.getActiveSheet().getRange('L22').getValues();
  var PO9 = SpreadsheetApp.getActiveSheet().getRange('L23').getValues();
  var P10 = SpreadsheetApp.getActiveSheet().getRange('L24').getValues();
  var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature; 
  MailApp.sendEmail({

    to: TO,
    subject: SUBJECT,
    cc: CC,
   htmlBody: 
    TEXT+"<br><br>"+

    TEXT2+"<br><br>"+
    //here is the problem ? I dont want PO3&4&5&6 if I only have 2 PO.
    PO1+"<br>"+          
    PO2+"<br>"+
    PO3+"<br>"+
    PO4+"<br>"+
    PO5+"<br>"+
    PO6+"<br>"+
    PO7+"<br>"+
    PO8+"<br>"+
    PO9+"<br>"+
    P10+"<br><br>"+
       signature


});

}

共有1个答案

朱阳曜
2023-03-14

只有当变量有值时,您才希望在电子邮件中包含变量。下面的代码在几个方面与您的不同。

    null
function so58564238() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "58564238";
  var sheet = ss.getSheetByName(sheetname);
  var POText = "";
  var PO = sheet.getRange(15,12,10,1).getValues();
  for (var i=0; i<PO.length;i++){
    var POValue = PO[i][0];
     if (POValue){
      POText = POText+POValue+"<br>"       
    }
  }
  Logger.log(POText)
}

合并邮件测试

function mailtest() {

  var TO = SpreadsheetApp.getActiveSheet().getRange('N3').getValue();
  var CC = SpreadsheetApp.getActiveSheet().getRange('N5').getValue();
  var SUBJECT = SpreadsheetApp.getActiveSheet().getRange('L9').getValue();
  var TEXT = SpreadsheetApp.getActiveSheet().getRange('L11').getValue();
  var TEXT2 = SpreadsheetApp.getActiveSheet().getRange('L13').getValue();
  var POText = "";
  var PO = sheet.getRange(15,12,10,1).getValues();
  for (var i=0; i<PO.length;i++){
    var POValue = PO[i][0]
     if (POValue){
      POText = POText+POValue+"<br>"       
    }
  }
  var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature; 
  MailApp.sendEmail({
    to: TO,
    subject: SUBJECT,
    cc: CC,
    htmlBody: 
    TEXT+"<br><br>"+
    TEXT2+"<br><br>"+
    POText+"<br>"+
    signature
  });

}
 类似资料:
  • 我正在使用PHPmailer发送电子邮件。到目前为止,我成功地将电子邮件发送到一个地址。现在,我想在一次点击中发送多封电子邮件。 问题:我曾尝试使用下面的一些循环发送多封电子邮件,但我输出错误。是的,它发送电子邮件,但只发送到一个地址,并且该电子邮件地址将获取所有应该发送到其他电子邮件的电子邮件。 例如,当我发送17封电子邮件时,这17封电子邮件只发送到一个地址。电子邮件应根据数据库中的地址发送,

  • 我正在使用Google表单将多条消息合并到一个每日电子邮件中,使用脚本和每日定时触发器发送(代码从这里复制,下面是我的版本)。 例如,一个电子邮件地址是abc@example.co.uk,他们收到了电子邮件,但在我的收件箱(xyz@example.co.uk)中是发送到abc@example.co.uk的电子邮件,但不是转发的消息或回复。 有什么办法阻止这一切吗?

  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 问题内容: 在Swift 的正常情况下,我使用此代码发送邮件。 如何在SwiftUI中实现相同目标? 我需要使用吗? 问题答案: 如前所述,您需要将组件移植到via 。 这是一个简单的实现: 用法 : (在运行iOS 13的iPhone 7 Plus上进行了测试-就像一个护身符) 为Xcode 11.4更新

  • 主要内容:SmtpClient类,示例VB.Net应用程序可发送电子邮件。名称空间包含用于向简单邮件传输协议(SMTP)服务器发送电子邮件以供传送的类。 下表列出了一些常用的类: 编号 类 描述 1 代表电子邮件的附件。 2 将附件存储为电子邮件的一部分。 3 代表电子邮件发件人或收件人的地址。 4 存储与电子邮件关联的电子邮件地址。 5 表示可以使用类发送的电子邮件。 6 允许应用程序使用简单邮件传输协议(SMTP)发送电子邮件。

  • 主要内容:使用 CDOSYS 发送电子邮件,CDONTs 怎么样?,使用 CDOSYS 的实例CDOSYS 是 ASP 中的内建组件。此组件用于通过 ASP 发送电子邮件。 使用 CDOSYS 发送电子邮件 CDO (Collaboration Data Objects) 是一项微软的技术,设计目的是用来简化通讯应用程序的创建。 CDOSYS 是 ASP 中的内建组件。我们将向您演示如何通过 ASP 使用该组件来发送电子邮件。 CDONTs 怎么样? 微软已经在 Windows 2000、