Как отправить электронное письмо с отформатированной таблицей из листа Google с помощью gs? - PullRequest
0 голосов
/ 27 февраля 2020

Вот код GS, который будет получать идентификатор электронной почты, а также тему и таблицу.

var EMAIL_DRAFTED = "EMAIL DRAFTED";

function draftMyEmails() {
  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[0];                // Col A: Client name
    var clientEmail = row[1];               // Col B: Client email
    var sub = row[2];                       // Col C: subject
    var body = row[3];                   // Col D: emailbody
    var emailStatus = row[lastColumn - 1];  // Col E: Email Status


    var range = sheet.getRange(2, 6, 1, 5).getDataRegion(SpreadsheetApp.Dimension.ROWS);
  var values = range.getValues();


    // Prevent from drafing duplicates and from drafting emails without a recipient
    if (emailStatus !== EMAIL_DRAFTED && clientEmail) {  

      // Build the email message
      var emailBody =  '<p>Hi ' + clientName + ',<p>';
          //emailBody += '<p>We are pleased to match you with your vegetable: <strong>' + veg + '</strong><p>';
          //emailBody += '<h2>About ' + veg + '</h2>';
          emailBody += '<p>' + values + '</p>';
         // emailBody += '<p>' + clientName + ', we hope that you and ' + veg + ' have a wonderful relationship.<p>';


      // Create the email draft
      GmailApp.createDraft(
        clientEmail,            // Recipient
        sub,  // Subject
        '',                     // Body (plain text)
        {
        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
    }
  }
}

Что я получаю, используя этот код:

Тело

7 & 8,9 & 10, IOS, 5 & 6 ,, а, б, c, д ,, 1,2,3,4,, 1,2,3,4,, 1,2,3,4,, 1,2,3,4,, 1 , 2,3,4,, 1,2,3,4,, 1,2,3,4,, 1,2,3,4,

ожидаемый результат должен быть таким. expected result should be like this.

Так выглядит лист Google.

1 Ответ

1 голос
/ 28 февраля 2020

Попробуйте:

function draftMyEmails() {
  var sh=SpreadsheetApp.getActiveSheet();
  var startRow=2;            
  var lastCol=sh.getLastColumn();
  var dataRange=sh.getRange(startRow,1,sh.getLastRow()-startRow+1,lastCol); 
  var data=dataRange.getValues();        
  for (var i=0;i<data.length;i++) {
    var row=data[i];  
    var clientName=row[0];           
    var clientEmail=row[1];          
    var sub=row[2];                  
    var body=row[3];                 
    var emailStatus=row[lastCol-1];
    var range=sh.getRange(2, 6, 1, 5).getDataRegion(SpreadsheetApp.Dimension.ROWS);
    var values=range.getValues();
    if (emailStatus!="EMAIL DRAFTED" && clientEmail) {  
      var emailBody= Utilities.formatString('<p>Hi %s </p>,<br />',clientName); 
      emailBody+='<style>td{border:1px solid black;)</style><table>';
      values.forEach(function(r,j){
        emailbody+='<tr>
        r.foreach(function(c,k){
          emailBody+=Utilities.formatString('<td>%s</td>',c);
        });
        emailBody+='</tr>';
      });
      emailBody+='</table>';
      GmailApp.createDraft(clientEmail,sub,'',{htmlBody: emailBody});
      sh.getRange(startRow + i, lastColumn).setValue("EMAIL_DRAFTED");
    }
  }
}

Пожалуйста, предоставьте мне изображение вашей электронной таблицы, чтобы я мог видеть, как выглядит ваша таблица, и я отлаживаю область таблицы для вас, или вы можете сделать это самостоятельно.

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