使用带有附件和标记复选框的谷歌应用程序脚本发送电子邮件

时间:2018-05-17 21:05:08

标签: checkbox google-apps-script email-attachments

我正在尝试构建一个脚本,该脚本将根据Google表格中的电子表格中的数据发送电子邮件。

Column 1 - emailAddress
Column 2 - subject
Column 3 - body
Column 4 - signature
Column 5 - fileName (name of the file I'd like to attach, will be different in each case)
Column 6 - checkbox (new functionality in G Sheets, marked= TRUE, unmarked=FALSE).

目的是仅向未标记为已发送的电子邮件发送电子邮件。脚本完成后,复选框应更改为TRUE以避免重复。 我写了下面的脚本但是有两个问题:

  • 如何制作将从第5列开始编码的fileName变量值?
  • 如何强制程序将复选框的状态更改为TRUE并省略那些已经为TRUE的程序?

功能:

function Email() {
  var rng = SpreadsheetApp.getActiveSheet().getActiveRange()
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = rng.getValues();
  for (i in data)  
    {
    var rowData = data[i];
    var checkbox = data[5]
    var file = DriveApp.getFilesByName(data[4]) 
    var emailAddress = rowData[0];
    var body = rowData[2];
    var subject = rowData[1]; 
    var signature = rowData[3];
    var message = body + '\n\n'+ signature;
      if(checkbox is != 'TRUE')
      {
      GmailApp.sendEmail(emailAddress,subject,message, 
      {
        attachments: [file.next().getAs(MimeType.PDF)]
      }
      );
    cell.setValue("TRUE");
    }
    }
}

1 个答案:

答案 0 :(得分:0)

如何制作一个将从第5列转到代码的fileName变量值?

创建变量var fileName。出于唯一性目的,只需在结尾1,2等处添加一个计数器,使其结束看起来像fileName1,fileName2等

如何强制程序将复选框的状态更改为TRUE并省略已经为TRUE的那些?

使用double for循环,因为使用工作表就像使用2D arrays一样。在里面创建一个if语句:

如果(getValue()是!='TRUE'){

细胞。setValue( “TRUE”)

}

希望你能从伪代码中得到这个想法。