根据Google Apps脚本中的条件,计算一个值在电子表格列中出现的次数

埃泽奎尔·科索伊(Ezequiel Kossoy)

我正在尝试创建一个电子表格应用脚本,该脚本将电子邮件发送给不同的用户,以通知他们做某事。

当然,我让它发送电子邮件,但是我不能让它发送提到同一封邮件的单元格数量的计数,因此将向用户通知他们必须处理的任务数量。

另一方面,我正在努力使脚本仅向用户发送一封电子邮件。

这是我要编写的代码:

var enviado = 'ok';
function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = 1000;
  // Rango J2:J
  var dataRange = sheet.getRange(startRow, 9, numRows, 4);
  var data = dataRange.getValues();
  var nextEmail = '';
  for (var i = 0; i < data.length; ++i) {
    if (i < data.length - 1) {
     nextEmail = data[i+1][11] //busca la siguiente fila, en la columna 11
    } 
    else {  //si i es la fila máxima
     nextEmail = ''
    }
    var row = data[i]; 
    var registrado = row[1];
    var name = row[0]
    var emailAddress = row[2];
    var contarMails = 0;
     for (var mails in emailAddress) {
       if (emailAddress[mails][0] == emailAddress) { //Here's where I'm stuck
       contarMails++;
       };
      };
    var mensaje = 
        '<p>¡Hola, '+name+'!</p>'+ 
        '<br>Tenés '+contarMails+' <strong>partida(s) no conciliada(s)</strong> asignada(s) en la Planilla Conciliaciones bancarias.</br><br></br>'+
        '<br>Ingresá al archivo para revisar: </br>'+'<a href="https://docs.google.com/spreadsheets/d/1kzaDQSMDwi_SFKaB4SDVYraeS8wqMjIVl_Tt20wfX1o/">Planilla Conciliaciones bancarias</a>'
    var mailEnviado = row[3];
    if (mailEnviado !== enviado) { // Previene el envío de duplicadios
      var asunto = 'Notificación PNC - Conciliaciones bancarias';
      if (emailAddress !== "" && mailEnviado !== enviado && nextEmail !== emailAddress){ //esto deberia evitar el envio de multiples mails a un mismo destinatario, pero no funciona
        if (registrado == false) {
          MailApp.sendEmail({
             to: emailAddress, 
             subject: asunto, 
             htmlBody: mensaje, 
             noReply: true
            });
          sheet.getRange(startRow + i, 12).setValue(enviado);
         // Asegura que la celda se complete automaticamente por si el script se detiene
        SpreadsheetApp.flush();
        }
      }
     }
   }
}

感谢您的帮助

谢谢!

库珀

刚注意到一个问题

var dataRange = sheet.getRange(startRow, 9, sheet.getLastRow()-startRow+1, 4);

上面的行创建了从I列到L列的范围

  var data = dataRange.getValues();

所以上一行的数据只有4列宽的索引0、1、2、3

  var nextEmail = '';
  for (var i=0;i<data.length;++i) {
    if (i < data.length - 1) {

因此没有数据[i + 1] [11]

     nextEmail = data[i+1][11] 
    } else { 
      nextEmail = ''
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从电子表格中修改另一个电子表格:Google Apps脚本

使用 Google Apps 脚本和 JavaScript 根据电子表格中的多列获取唯一值

使用 Apps 脚本根据 2 个条件将电子表格中的一行发送到另一个

根据 B 列在下一个电子表格中复制 A 列 - Google Apps Script / Google Sheets

在WorkBook中使用另一个电子表格中的= UNIQUE-Google Apps脚本

如何根据活动电子表格 Google Apps 脚本中的数据创建多个电子表格?

使用 Google Apps 脚本确认电子表格列中的值

Google Apps脚本,使用格式将一个电子表格复制到另一电子表格

如何根据Google电子表格中的多个条件从另一个单元格匹配或获取动态值

我可以根据单独电子表格中的信息修改一个电子表格文档(Google表格)吗

如何在另一个电子表格中使用Google Apps脚本?

将工作表复制到另一个电子表格[Google Apps脚本]

如何在Google Apps脚本中的不同电子表格之间复制条件格式

根据Google电子表格中单个列的值对整个行进行颜色编码(条件格式)

在Google Apps脚本中从电子表格传递JSON值

如何在Google Apps脚本中将按钮连接到另一个电子表格中的功能?

建立一个表格,其中包含Google电子表格中每个组的唯一值总计

根据电子表格中的两列计算唯一值的数量

Google Apps 脚本复制范围从一个电子表格到另一个具有格式/公式的电子表格

将过滤器数据从一个电子表格文件复制到另一个电子表格-Google Apps脚本

如何根据Google Apps脚本中的电子表格日期发送电子邮件?

我在电子表格列上添加了一个变量,以便在Google Apps脚本中创建PDF。我无法获取变量来分配正确的值

如何动态设置从Google电子表格到另一个Google电子表格单元格的值

是否可以从多个Google电子表格中创建一个pdf文件?

Google 电子表格 - 在列中查找前五个值

如何根据EXCEL(Google电子表格)中的复杂条件来编辑单元格的值

使用Google工作表脚本时,如何在不创建新工作表副本的情况下将电子表格的工作表复制到另一个电子表格中?

如何在一个电子邮件Google应用脚本中发送多个电子表格数据?

复制单元格值并将其通过脚本发送到另一个电子表格的更快方法(Google表格)