Скрипт рассылки после сортировки - PullRequest
1 голос
/ 21 июня 2019

Я уже писал об этом здесь, так что я надеюсь, что можно спросить об отдельной проблеме с этим кодом.

У меня есть письмо со скриптом при отправке новых заявок с использованием формы. Это работало замечательно, но тогда я хотел отсортировать самые новые наверху, и теперь я не получаю электронных писем. Что я упустил в этом сценарии?

Сортировка сценария

// Dirty but works
var SORT_COLUMN_INDEX = 1;
var ASCENDING = false;

var NUMBER_OF_HEADER_ROWS = 1;


var activeSheet;

function autoSort(sheet) {
  var range = sheet.getDataRange();

  if (NUMBER_OF_HEADER_ROWS > 0) {

    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }

  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}


function onEdit(event) {
  var editedCell;

  activeSheet = SpreadsheetApp.getActiveSheet();

  editedCell = activeSheet.getActiveCell();

  if (editedCell.getColumn() == SORT_COLUMN_INDEX) {
    autoSort(activeSheet);
  }
}


function onOpen(event) {
  activeSheet = SpreadsheetApp.getActiveSheet();
  autoSort(activeSheet);
}

function onInstall(event) {
  onOpen(event);
}


Email Script

function SendEmail() {
 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var StartRow = 2;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,19);
 var AllValues = WholeRange.getValues();

 var message = "";
 for (i in AllValues) {
 var CurrentRow = AllValues[i];

 var EmailSent = CurrentRow[19];

 if (EmailSent == "Sent") 
     continue;

  message =
      "<p><b>Email?: </b>" + CurrentRow[1] + "</p>" +
      "<p><b>District: </b>" + CurrentRow[2] + "</p>" +
      "<p><b>Vendor Cost: </b>" + CurrentRow[3] + "</p>" +
      "<p><b>Vendor Cost: </b>" + CurrentRow[4] + "</p>" +
      "<p><b>Default Price: </b>" + CurrentRow[5] + "</p>" +
      "<p><b>Vendor: </b>" + CurrentRow[6] + "</p>" +
      "<p><b>Vendor SKU: </b>" + CurrentRow[7] + "</p>" +
      "<p><b>Manufacturer: </b>" + CurrentRow[8] + "</p>" +
      "<p><b>Manufacturer SKU: </b>" + CurrentRow[9] + "</p>" +
      "<p><b>Barcode: </b>" + CurrentRow[10] + "</p>"+
      "<p><b>Category: </b>" + CurrentRow[11] + "</p>" +
      "<p><b>Device: </b>" + CurrentRow[12] + "</p>" +
      "<p><b>Model: </b>" + CurrentRow[13] + "</p>"+
      "<p><b>Color: </b>" + CurrentRow[14] + "</p>";


  var setRow = parseInt(i) + StartRow;


  ActiveSheet.getRange(setRow, 19).setValue("Sent");
}


 var SendTo = "@vzwpix.com";
 var SendToEmail = "davidm";


  var Subject = "New Sku:" +" "+ CurrentRow[13] +" " +"From:"+" "+CurrentRow[1];

  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});

   MailApp.sendEmail({
      to: SendToEmail,
      cc: "",
      subject: Subject,
      htmlBody: message,
});


}

Альтернативный рабочий скрипт

Я настроил свой скрипт для поиска пустого столбца и отправки почты Вот сценарий:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3; // Start at second row because the first row contains the data labels
  var lastRow = sheet.getLastRow()
  var lastCol = sheet.getLastColumn()

  // Fetch the range of cells, in this case A2:T
  // Column B, row[2] = Email Address, Column C, row[1] = Name
  var dataRange = sheet.getRange(startRow, 1, lastRow, lastCol)

  // Fetch values for each row in the Range.
  var data = dataRange.getValues();

  for (var i = 0; i < data.length-1; ++i) {
    var row = data[i];
   var emailAddress = row[1]; // 
    var message = 
      "<p><b>Email?: </b>" + row[1] + "</p>" +
      "<p><b>District: </b>" + row[2] + "</p>" +
      "<p><b>Vendor Cost: </b>" + row[3] + "</p>" +
      "<p><b>Vendor Cost: </b>" + row[4] + "</p>" +
      "<p><b>Default Price: </b>" + row[5] + "</p>" +
      "<p><b>Vendor: </b>" + row[6] + "</p>" +
      "<p><b>Vendor SKU: </b>" + row[7] + "</p>" +
      "<p><b>Manufacturer: </b>" + row[8] + "</p>" +
      "<p><b>Manufacturer SKU: </b>" + row[9] + "</p>" +
      "<p><b>Barcode: </b>" + row[10] + "</p>"+
      "<p><b>Category: </b>" + row[11] + "</p>" +
      "<p><b>Device: </b>" + row[12] + "</p>" +
      "<p><b>Model: </b>" + row[13] + "</p>"+
      "<p><b>Color: </b>" + row[14] + "</p>"



    ; // Assemble the body text
        var cell = row[19]; // Last column
    if (cell == "") { 
   var subject = "Sending emails from a Spreadsheet";
  MailApp.sendEmail({
      to: "PHONE@vzwpix.com",
      cc: "",
      subject: subject,
      htmlBody: message,
});
  }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...