Google Script для автоматического составления писем - PullRequest
0 голосов
/ 20 декабря 2018

Моя цель - автоматически создавать черновики электронной почты из списка Google Sheets.В основном все работает, единственная проблема, с которой я сталкиваюсь, это то, что в сообщении электронной почты просто говорится [объект объекта].

С предметом все в порядке, адрес электронной почты в порядке, и перерыв, чтобы не дать ему отправиться тому же человеку снова, вполне подойдет.

Я не уверен, что не так .... но я предполагаю, что это начинается с // Построить сообщение электронной почты.

Есть предложения?

У меня есть следующее:

var EMAIL_DRAFTED = "EMAIL DRAFTED";

function draftPastDueEmails() {
  var sheet = SpreadsheetApp.getActiveSheet(); // Use data from the active sheet
  var startRow = 2;                            // First row of data to process
  var numRows = sheet.getLastRow() - 1;        // Number of rows to process
  var lastColumn = sheet.getLastColumn();      // Last column
  var dataRange = sheet.getRange(startRow, 1, numRows, lastColumn) // Fetch the data range of the active sheet
  var data = dataRange.getValues();            // Fetch values for each row in the range
  
  // Work through each row in the spreadsheet
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];  
    // Assign each row a variable
    var clientName = row[12];               // Client name
    var clientEmail = row[14];              // Client email
    var reference = row[1];                 // Account Reference
    var invNum = row[0];                    // Invoice number
    var emailStatus = row[20];              // Email Status
    
    // Prevent from drafing duplicates and from drafting emails without a recipient
    if (emailStatus !== EMAIL_DRAFTED && clientEmail) {  
    
      // Build the email message
    var emailBody =  '<p>Hello ' +clientName+ ',</p>';
        emailBody += '<p>I hope all is well.</p>';
        emailBody += '<p>I noticed that invoice <strong>' +invNum+ '</strong> is currently past due.</p>';
        emailBody += '<p>Could you please take a moment to check your records to see if a payment has been made and provide a receipt to allow me to track it in my system.</p>';
        emailBody += '<p>If no payment has been made for whatever reason, please do so as soon as possible so I can post it to your account.</p>';
        emailBody += '<p>Please let me know if you have any questions.</p>';
        emailBody += '<p>Best,</p>';
      
      // Create the email draft
      GmailApp.createDraft(
        clientEmail,            // Recipient
        'Past due account - '+reference+ // Subject
        '',
        {
        htmlBody: emailBody    // Options: Body (HTML)
        }
      );
      
      sheet.getRange(startRow + i, lastColumn).setValue(EMAIL_DRAFTED); // Update the last column with "EMAIL_DRAFTED"
      SpreadsheetApp.flush(); // Make sure the last cell is updated right away
    }
  }
}

1 Ответ

0 голосов
/ 20 декабря 2018

Похоже, что проблема здесь:

      // Create the email draft
      GmailApp.createDraft(
        clientEmail,            // Recipient
        'Past due account - '+reference+ // Subject
        '',
        {
        htmlBody: emailBody    // Options: Body (HTML)
        }
      );

Метод ожидает 3 строки - получатель, субъект и тело - после параметров с параметром "htmlBody".Код выше предоставляет только получателя и тему.Попробуйте вместо этого:

      // Create the email draft
      GmailApp.createDraft(
        clientEmail,            // Recipient
        'Past due account - '+reference, // Subject
        '', // Plaintext body
        {
        htmlBody: emailBody    // Options: Body (HTML)
        }
      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...