[英]Fetch rows with column matching a criteria and send them by email (Google Sheets)
這里需要在列中設置最小數量,並且一旦庫存中具有等於或小於該數量的商品數量,則每天發送一封電子郵件並提取行。 我將下面的腳本用於其他目的,但這一次發送一封電子郵件,每行只有一行,而現在我們需要提取一行並以一封電子郵件發送(HTML格式是理想的)。
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Pedidos");
var startRow = 7; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
// Fetch the range of cells A7:s3
var dataRange = sheet.getRange(startRow, 1, numRows, 25)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var rowData = data[i];
if (rowData[13] === "Ativo") {
var emailAddress = ""; // First column
var update = rowData[12];
var NumPedido = rowData[0];
var Cliente = rowData[1];
var UF = rowData[3];
var Produto = rowData[4];
var TotaldoPedido = rowData[7];
var NumNF = rowData[8];
var Status = rowData[13];
var Obs = rowData[16];
var DataAgenda = rowData[11];
var senha = rowData[15];
var respons = rowData[17];
var message = "<HTML><BODY>"
//+ "<P>Dear " + firstname + ","
//+ "<br /><br />"
+ "<P>Status do Pedido " + NumPedido + ", do cliente " + Cliente + " foi atualizado! Veja abaixo:"
+ "<brr /><br />"
+ "<br>Data da Atualização: </b>" + update + "<br />"
+ "<br>Nº do Pedido: </b>" + NumPedido + "<br />"
+ "<br>Cliente: </b>" + Cliente + UF + "<br />"
+ "<br>Produto: </b>" + Produto + "<br />"
+ "<br>Nº da NF: </b>" + NumNF + "<br />"
+ "<br>Status: </b>" + Status + "<br />"
+ "<br>Senha: </b>" + senha + "<br />"
+ "<br>Observações: </b>" + Obs + "<br />"
+ "<br>Responsável: </b>" + respons + "<br />"
+ "<br /><br />"
+ "<br>Clique para explorar detalhes, ou para atualizar o status: </b>" + "" + "<br />"
+ "<br /><br />"
+ "</HTML></BODY>";
var emailAtivo = rowData[18];
if (emailAtivo != EMAIL_SENT && rowData[13] === "Ativo") { // Prevents sending duplicates
var subject = "Status do Pedido " + NumPedido + " do " + Cliente + " " + UF + " atualizado";
MailApp.sendEmail({
to: emailAddress,
subject: subject,
htmlBody: message
});
sheet.getRange(startRow + i, 19).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
//}
}}
這是更新后的腳本:function sendTableEmail(){var sheet = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(“ Estoque-Almox-ADB”);
// Get your table data
var startRow = 7; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 14); // Fetch the range of cells A7:D
var data = dataRange.getValues(); // Fetch values for each row in the Range.
var minimum = sheet.getRange("n7:n32").getValue(); // Minimum quantity to check against
// Loop through the data to build your table
var message = "<html><body><table style=\"text-align:center\"><tr><th>Código</th><th>Descrição</th><th>Qtd(Cx)</th><th>Estoque Mín. (Cx)</th></tr>";
for (var i = 0; i < data.length; ++i) {
var rowData = data[i];
var Code = rowData[4];
var Description = rowData[5];
var InventoryUnit = rowData[10];
var InventoryBox = rowData[11];
var InventoryPallet = rowData[12];
//var MinQty = rowData[13];
//if (minimum >= 31) {
if (InventoryBox <= minimum) {
//var valueA = rowData[0];
//var valueB = rowData[1];
message += "<tr><td>"+Code+"</td><td>"+Description+"</td><td>"+InventoryBox+"</td><td>"+minimum+"</td></tr>";
//}
}
}
message += "</table></body></html>";
var subject = "Alerta de Estoque Mín. na Expedição";
MailApp.sendEmail({
to: "EMAIL",
subject: subject,
htmlBody: message
});
}
...這是我的電子郵件中收到的結果: 它會帶入不應包含的十進制數字(第四列),第五列顯示30,而在電子表格中,公式的結果為“”,其中未列出任何產品。 再次感謝您的幫助。
因此,如果列L <=列N,則獲取滿足此條件的行並將其發送給電子郵件。
我更清楚地了解您現在在做什么。 由於“最小”對於每一行都是唯一的,因此可以在啟動dataRange
時將其dataRange
。 為防止列表中包含空白值,請在繼續操作前檢查Code
是否為空白。 要固定小數,請使用toFixed()
( 請參閱docs )。 最后,以防萬一不需要發送電子郵件,我添加了sendEmail
布爾值。 如果您的數量都還可以,則不會發送電子郵件。
function sendTableEmail() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Estoque-Almox - ADB");
// Get your table data
var startRow = 7; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 15); // Fetch the range, including the minimums
var data = dataRange.getValues(); // Fetch values for each row in the Range.
// Loop through the data to build your table
var message = "<html><body><table style=\"text-align:center\"><tr><th>Código</th><th>Descrição</th><th>Qtd(Cx)</th><th>Estoque Mín. (Cx)</th></tr>";
var sendEmail = false; // If there is content to send, will be set to true
for (var i = 0; i < data.length; ++i) {
var rowData = data[i];
var Code = rowData[4];
if (Code != "") { // Check for blank Code. If blank, then skip and don't add to the table.
var Description = rowData[5];
var InventoryUnit = rowData[10];
var InventoryBox = rowData[11];
var InventoryPallet = rowData[12];
var minimum = rowData[13];
if (InventoryBox <= minimum) {
message += "<tr><td>"+Code+"</td><td>"+Description+"</td><td>"+Number(InventoryBox).toFixed(0)+"</td><td>"+minimum+"</td></tr>";
sendEmail = true; // There is content to send!
}
}
}
message += "</table></body></html>";
if (sendEmail) {
var subject = "Alerta de Estoque Mín. na Expedição";
MailApp.sendEmail({
to: "EMAIL",
subject: subject,
htmlBody: message
});
}
}
您沒有為我提供足夠的信息來解決您的嘗試,因此,我為您提供了一個基於您所提供內容的示例。 一般原則是:
我希望這有幫助。
function sendTableEmail() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Pedidos");
// Get your table data
var startRow = 7; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 4); // Fetch the range of cells A7:D
var data = dataRange.getValues(); // Fetch values for each row in the Range.
var minimum = sheet.getRange("B4").getValue(); // Minimum quantity to check against
// Loop through the data to build your table
var message = "<html><body><table style=\"text-align:center\"><tr><th>A</th><th>B</th><th>Quantity</th><th>Status</th></tr>";
for (var i = 0; i < data.length; ++i) {
var rowData = data[i];
var status = rowData[3];
var quantity = rowData[2];
if (status == "Ativo") {
if (quantity <= minimum) {
var valueA = rowData[0];
var valueB = rowData[1];
message += "<tr><td>"+valueA+"</td><td>"+valueB+"</td><td>"+quantity+"</td><td>"+status+"</td></tr>";
}
}
}
message += "</table></body></html>";
var subject = "Email Subject";
MailApp.sendEmail({
to: "YOUR_EMAIL_ADDRESS@DOMAIN.COM",
subject: subject,
htmlBody: message
});
}
這就是電子表格的外觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.