按空单元格过滤内容

时间:2014-08-15 19:01:57

标签: google-apps-script google-sheets

我有一个包含用户列表的Google电子表格。这些用户有数据(姓名,电子邮件,年龄)。

还有一个通过电子邮件发送此用户列表的功能。

此功能正常,但我需要使用空单元格仅发送用户。

如何在Google Apps Scripts电子表格中执行此操作?

实施例

电子邮件正文:

username | age          | email

jhon     |  **empty**   | jhon@j.com

sam      | 25           | **empty**

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,还有更多方法可以在电子邮件中显示数据......

以下是其中之一,从这段代码中你应该能够构建一个脚本,以你想要的方式显示结果......脚本按原样工作,并显示选择的逻辑。

请参阅解释每个步骤的代码中的注释

function sendIncompleteData() {
  var sh = SpreadsheetApp.getActive().getActiveSheet();
  var data = sh.getDataRange().getValues();// get all the data in the sheet
  var headers = data.shift();// extract headers and keep in a variable
  Logger.log(headers+'\n'+data);// check values in the logger
  var toSend = [];// this will hold the list to send
  for(var n in data){ // iterate the array
    var send = false;
    var row = data[n];// row by row and cell by cell, starting in second column
    var msg = 'Missing element for '+row[0]+' : ';// prepare message for 1 row
    var present = '  (';// this will show available data
    for(var c=1 ; c<row.length ; c++){
      if(row[c]==''){msg+=headers[c]+'    ' ; send=true} else {present+=row[c]+' - '};
    }
    if(send){toSend.push(msg+present+')')};// collect data to send
  }
  if(toSend.length>0){ // if at least one row has missing data
    MailApp.sendEmail(Session.getEffectiveUser().getEmail(),'missing data in sheet '+sh.getName(),toSend.join('\n'));// send the message to the sheet user (change eventually the recipient to your need
  }
}

注意:它会自动适应任意数量的列,你必须在第1行有一个带有变量名称的标题(名称,电子邮件,年龄......)