我有一个包含用户列表的Google电子表格。这些用户有数据(姓名,电子邮件,年龄)。
还有一个通过电子邮件发送此用户列表的功能。
此功能正常,但我需要使用空单元格仅发送用户。
如何在Google Apps Scripts电子表格中执行此操作?
实施例
电子邮件正文:
username | age | email
jhon | **empty** | jhon@j.com
sam | 25 | **empty**
答案 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行有一个带有变量名称的标题(名称,电子邮件,年龄......)