Скрипт листа Google: получение списка значений ячеек, если ячейка в столбце больше '0' - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь отправить электронное письмо из списка заказов в Google Sheets при нажатии кнопки. Все идет хорошо, но мне нужна помощь с одной конкретной c частью: составление списка всех заказанных продуктов.

Google Sheet screenshot

Я добавил код ниже к кнопке:

function sendMyEmails() {
    // Get sheet variables
    var sheet = SpreadsheetApp.getActiveSheet(); // Use data from the active sheet
    var Column_E = sheet.getRange("E1:E").getValues();

    var Companyname = sheet.getRange("K3").getValue(); // Company name in veld K3
    var Name = sheet.getRange("K4").getValue(); // Name in cell K4
    var Adress = sheet.getRange("K5").getValue(); // Adress in cell K5
    var Postalcode = sheet.getRange("K6").getValue(); // Postal code in cell K6
    var City = sheet.getRange("K7").getValue(); // City in cell K7
    var Products = ???;

    // Build the email message
    var emailBody =  'Hi,';
    emailBody += '<p>I would like to order:</p>';
    emailBody += '<i>'+ Products + '</i>';
    emailBody += '<p>You can deliver it to:</p>';
    emailBody += '<i>'+ Companyname + '</i><br><i>' + Name + '</i><br><i>' + Adress + '</i><br><i>'+ Postalcode + '</i><br><i>' + City + '</i><br></i>';
          emailBody += '<p>Thanks in advance!</p>';

     // Send the email
     MailApp.sendEmail(
     "email@email.nl", // recipient
      "New order", // subject
      '',                     
     // Body (plain text)
        {
        htmlBody: emailBody    // Options: Body (HTML)
        }
  );
}

Я хочу проверить столбец E, если есть значение больше, чем «0» (количество продуктов, которое клиент хочет заказать). Если ячейка в столбце E имеет значение «1» или выше, сценарий должен взять значение ячейки в столбце K той же строки и поместить его в сообщение электронной почты (в виде списка). Когда заказано 2 товара, почта должна выглядеть так:

Hi,

I would like to order:

1x article A (value of a cell in column K)
1x article B (value of a cell in column K)

You can deliver it to:

Company
Name
Address
Postal code
City

Thanks in advance!

1 Ответ

0 голосов
/ 23 января 2020

Вы должны выполнить итерацию по всем строкам с продуктами и проверить для каждой строки, соответствует ли это количество количеству, превышающему 0. В этом случае информация о продукте добавляется в тело электронного письма. Это может быть что-то вроде следующего (проверьте встроенные комментарии для более подробной информации о том, что код делает в каждой строке):

function sendMyEmails() {
  var sheet = SpreadsheetApp.getActiveSheet(); // Use data from the active sheet  
  // Build the email message:
  var emailBody =  'Hi,';
  emailBody += '<p>I would like to order:</p>';  
  // Build product part:
  var firstRow = 10; // Where product data starts (in your sample, it's row 10)
  var firstCol = 1; // Which column product data starts
  var numRows = sheet.getLastRow() - firstRow + 1;
  var numCols = sheet.getLastColumn() - firstCol + 1;
  // Get all values about product data:
  var productData = sheet.getRange(firstRow, firstCol, numRows, numCols).getValues();
  var products = "";
  for (var j = 0; j < productData.length; j++) { // Iterating through all row with product data
    var row = productData[j];
    var quantity = row[4];
    if (quantity > 0) { // Check if quantity is above 0
      var article = row[0];
      // Append product data:
      products += '<i>' + quantity + 'x article number ' + article + '</i><br>';
    }
  }
  emailBody += '<i>'+ products + '</i>'; // Append all product data to the email body
  // Build contact data part:
  var contactData = sheet.getRange("K3:K7").getValues();
  emailBody += '<p>You can deliver it to:</p>';
  for (var i = 0; i < contactData.length; i++) { // Iterating through all contact data
    emailBody += '<i>' + contactData[i][0] + '</i><br>' // Adding contact data to email body
  }
  emailBody += '<p>Thanks in advance!</p>';  
  // Send the email
  MailApp.sendEmail(
    "email@email.nl", // recipient
    "New order", // subject
    '',                     
    // Body (plain text)
    {
      htmlBody: emailBody    // Options: Body (HTML)
    }
  );
}

Я протестировал код, и он отправил электронное письмо, подобное этому:

enter image description here

Примечания:

  • В этом примере я не использую данные в столбце K, но создаю сообщения 1x article A в самом скрипте (см. встроенные комментарии).
  • В этом примере я использую al oop для добавления контактных данных, вместо этого создаю getValue для каждой ячейки и добавляю все поля в тело письма. по одному (см. встроенные комментарии).

Ссылка:

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...