每天我必须通过电子邮件向其他收件人发送不同数量的Google工作表表格行(具体取决于出发的卡车数量)。
请帮助我,举例说明如何在单元格与当前日期匹配的情况下收集几行google表,然后通过电子邮件发送它。
例如,我需要获取具有今天日期的所有行,并通过电子邮件从A,B,C,E列发送数据。
非常感谢您的帮助:)
答案 0 :(得分:0)
让我们一步一步走。我假设列A包含日期。如果不正确,请更改它:
function main() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sheet.getActiveSheet();
var row_count = sheet.getLastRow() - 1;
var today = Utilities.formatDate(new Date(), "UTC", "dd.MM.yyyy"); //You can use the date format you prefer
var data = sheet.getRange("A2:E"+ (row_count + 1)).getValues(); //We get all the values from A to E and from row 2 to the last one.
countToday(sheet, today, row_count, data);
sendEmails(data);
}
function countToday(sheet,today, row, data){
var lastrow = "A" + (row + 1);
var col_A = sheet.getRange('A2:'+lastrow).getValues();
for (var i = row; i >= 0; i--){
if (col_A[i] != today){
data.splice(i, 1); //
}
}
}
function sendEmails(data){
MailApp.sendEmail({
to: "example1@mail.com" + "example2@mail.com", //You can put as many emails you want
subject: "Example",
htmlBody:"<html><body>" + createTable(data)+ "</body></html>"});
}
data
中将每个元素分隔为逗号(即每个工作表单元格),然后将其添加到变量的末尾。 将为我们创建行。function createTable(data){
var cells = [];
var table = "<html><body><br><table border=1><tr><th>Date</th><th>Column B</th><th>Column C</th><th>Column D</th><th>Column E</tr></br>";
for (var i = 0; i < data.length; i++){
cells = data[i].toString().split(",");
table = table + "<tr></tr>";
for (var u = 0; u < cells.length; u++){
table = table + "<td>"+ cells[u] +"</td>";
}
}
table=table+"</table></body></html>";
return table;
}
答案 1 :(得分:0)
这是我的代码示例。但是我不知道如何实现防止重复发送邮件的功能。 EMAIL_SENT仅在“ for”循环中工作。但是在这种情况下,如果单元格中不包含“ EMAIL_SENT”字符串,则电子邮件发送的次数与空单元格一样。
function main() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sheet.getSheetByName("HR-SI B2C");
var row_count = sheet.getLastRow() - 1;
var today = Utilities.formatDate(new Date(), "UTC", "dd/MM/yyyy"); //You can use the
date format you prefer
var data = sheet.getRange("A3:K"+ (row_count + 1)).getValues(); //We get all the
values from A to E and from row 2 to the last one.
var lastrow = "A" + (row_count + 1);
var col_A = sheet.getRange('A3:'+lastrow).getDisplayValues();
var row = data[i];
for (var i = row_count; i >= 0; i--){
if (col_A[i] != today){
data.splice(i, 1);
}
}
if (("K" + (row_count+2)) == "EMAIL_SENT"){
}else if(("D" + (row_count)) == "" || ("F" + (row_count)) == ""){
dontSendEmail();
}else{
sendEmailsQHNBRGR(data);
}
}
//-----------------------------------------------------------------------------------
function dontSendEmail(){
var today = Utilities.formatDate(new Date(), "UTC", "dd/MM/yyyy"); //You can use the
date format you prefer
MailApp.sendEmail({
to: "dymitrian.janowy@orsay.com", //You can put as many emails you want
subject: "Brak wpisanych ilości dla HR i SI za " + today,
htmlBody:"<html><body> Witam,<br><br>" +
"<span><b>Proszę bardzo wpisać ilości dla HR i SI do tabeli</b></span>" +
"</body></html>"});
}
//-----------------------------------------------------------------------------------
function sendEmailsQHNBRGR(data, platesNum){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sheet.getSheetByName("HR-SI B2C");
var row_count = sheet.getLastRow() - 1;
var today = Utilities.formatDate(new Date(), "UTC", "dd/MM/yyyy"); //You can use the date format you prefer
var data = sheet.getRange("A3:G"+ (row_count + 1)).getDisplayValues(); //We get all the values from A to D and from row 2 to the last one.
var cells = [];
var table = "<html><body><table border=3><tr><th>Date</th><th>Day</th><th>HR [pcs]</th><th>HR [ep]</th><th>SI [pcs]</th><th>SI [ep]</th></tr>";
var lastrow = "A" + (row_count + 1);
var col_A = sheet.getRange('A3:'+lastrow).getDisplayValues();
MailApp.sendEmail({
to: "dymitrian.janowy@orsay.com", //You can put as many emails you want
subject: "(HR+SI) Orsay prealert " + today,
htmlBody:"<html><body> Dear All,<br><br>" +
"<span style=background-color:rgb(217,234,211)><b>Today we've sent e-com goods in listed quantity:</b></span>" +
createTable(data) + "<br>" +
"<span style=background-color:rgb(255,242,204)><b>@DPD team, could you pick it up
tomorrow at 02:00 PM?</b></span><br>" +
"</body></html>"});
}
//-----------------------------------------------------------------------------------
function createTable(data){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = sheet.getSheetByName("HR-SI B2C");
var row_count = sheet.getLastRow() - 1;
var today = Utilities.formatDate(new Date(), "UTC", "dd/MM/yyyy"); //You can use the date format you prefer
var data = sheet.getRange("A3:G"+ (row_count + 1)).getDisplayValues(); //We get all the values from A to D and from row 2 to the last one.
var cells = [];
var table = "<html><body><table border=3><tr><th>Date</th><th>Day</th>
<th>Plates number</th><th>HR [pcs]</th><th>HR [ep]</th><th>SI [pcs]</th>
<th>SI [ep]</th></tr>";
var lastrow = "A" + (row_count + 1);
var col_A = sheet.getRange('A3:'+lastrow).getDisplayValues();
for (var i = row_count; i >= 0; i--){
if (col_A[i] != today){
data.splice(i, 1);
}
}
for (var i = 0; i < data.length; i++){
cells = data[i].toString().split(",");
table = table + "<tr></tr>";
for (var u = 0; u < cells.length; u++){
table = table + "<td>"+ cells[u] +"</td>";
sheet.getRange("K3:K"+ (row_count + 1)).setValue("EMAIL_SENT");
}
}
table=table+"</table></body></html>";
return table;
}
}