es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enviar un correo electrónico desde Sheets cuando los valores estén por debajo de un valor establecido

Estoy tratando de escribir un script para una hoja de cálculo de Google que uso para el seguimiento de inventario. Cuando el valor en existencia cae por debajo del valor mínimo de inventario, quiero que se envíe un correo electrónico que incluya el número de parte y la cantidad que necesito hacer para volver a nuestra cantidad mínima de inventario, es decir, “PN necesita # hechos”. He tenido éxito enviando un correo electrónico para un valor, pero no puedo averiguar cómo hacer que el script mire en un rango sin repetir el script para cada fila.

La imagen es una captura de pantalla de en qué estoy trabajando. Por ejemplo, dado que V1276 necesita hacer una pieza más para cumplir con la cantidad mínima de inventario, me gustaría que el correo electrónico me diga “V1276 necesita 1 hecho”. El código de muestra con el que he estado jugando:

function CheckParts() {
var minVal = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Lista maestra").getRange("H2");
var valor = minVal.getValue();
if (valor < minVal){
// Obtener la dirección de correo electrónico
var rangoCorreo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hoja1").getRange("B2");
var direcciónCorreo = rangoCorreo.getValues();

// Enviar correo electrónico de alerta.
var mensaje = 'Necesitas hacer ' + mesVentas; // Segunda columna
var asunto = 'Alerta de Piezas Bajas';
MailApp.sendEmail(direcciónCorreo, asunto, mensaje);
}
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para que el script recorra un rango sin repetir el script en cada fila, puedes:

    1. Obtener los valores en el rango que deseas verificar utilizando getValues() en lugar de getValue() ya que deseas obtener un rango y no solo una celda individual.
    2. Recorrer cada fila del rango utilizando un bucle for.
    3. Verificar si el valor en existencia está por debajo del valor mínimo de inventario para cada fila.
    4. Si el valor en existencia está por debajo del valor mínimo de inventario, enviar un correo electrónico con el número de parte y la cantidad necesaria para volver a la cantidad mínima de inventario.

    Aquí tienes un código de ejemplo que hace esto:

    function CheckParts() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Master List");
      var range = sheet.getRange("F2:H");
      var values = range.getValues();
    
      for (var i = 0; i < values.length; i++) {
        var partNumber = values[i][0];
        var onHandValue = values[i][1];
        var minInventoryValue = values[i][2];
    
        if (onHandValue < minInventoryValue) {
          var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2");
          var emailAddress = emailRange.getValue();
    
          var quantityNeeded = minInventoryValue - onHandValue;
          var message = partNumber + " Needs " + quantityNeeded + " Made";
          var subject = "Low Parts Alert";
          MailApp.sendEmail(emailAddress, subject, message);
        }
      }
    }
    

    Este código asume que la hoja donde deseas verificar los valores se llama “Master List”, y el rango que deseas verificar comienza en la celda F2 y termina en la última fila. La dirección de correo electrónico donde deseas enviar la alerta está en la celda B2 de “Sheet1”.

Comments are closed.