Скрипт Google Apps для отправки вложений

#google-apps-script #google-sheets

Вопрос:

в настоящее время я могу отправить pdf-файл из электронной таблицы Google по электронной почте с помощью этого скрипта с вложением, но вложение не отправляется

это мой текущий сценарий :

   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").hideSheet();
  var startRow = 2; // First row of data to process
  var getLastRow = 4000; // Number of rows to process
  var dataRange = sheet.getRange(startRow, 4, getLastRow, 7);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length;   i) {
    var row = data[i];
    var trigger = row[0];
    var emailAddress = row[2]; // Email column
    if(emailAddress != "" amp;amp; emailAddress != " "){ 
      var message = "Hi,nnSilahkan download dan print attachment ini.nnTerima Kasih,nSistemHBR"; // Content column
      var subject = "FORM CUTI";
      var status_email = row[6];
      if ((trigger != 'FALSE') amp;amp; (status_email != 'EMAIL_SENT')); // Prevents sending duplicates
      attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")]; { 
        MailApp.sendEmail(emailAddress, subject, message);
        sheet.getRange(startRow   i, 7).setValue('EMAIL_SENT');
        // Make sure the cell is updated right away in case the script is interrupted
        SpreadsheetApp.flush();
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
        
  }
  //MailApp.sendEmail(message);
  //SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
   }
  }
}
 

Что не так с моим кодом выше?

Спасибо

Ответ №1:

В вашем сценарии я подумал, что , когда if ((trigger != 'FALSE') amp;amp; (status_email != 'EMAIL_SENT')) это true произойдет, вы, возможно, захотите отправить электронное письмо. Итак, как насчет следующей модификации?

От:

 if ((trigger != 'FALSE') amp;amp; (status_email != 'EMAIL_SENT')); // Prevents sending duplicates
 attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")]; { 
   MailApp.sendEmail(emailAddress, subject, message);
   sheet.getRange(startRow   i, 7).setValue('EMAIL_SENT');
   // Make sure the cell is updated right away in case the script is interrupted
   SpreadsheetApp.flush();
   SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();

}
 

Для:

 if ((trigger != 'FALSE') amp;amp; (status_email != 'EMAIL_SENT')) {
  attachments = [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("FORM CUTI")];
  MailApp.sendEmail(emailAddress, subject, message, {attachments: attachments});
  sheet.getRange(startRow   i, 7).setValue('EMAIL_SENT');
  // Make sure the cell is updated right away in case the script is interrupted
  SpreadsheetApp.flush();
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HELPER").activate();
}
 
  • В этом случае, когда (trigger != 'FALSE') amp;amp; (status_email != 'EMAIL_SENT') это true так , электронное письмо отправляется, включая файл вложения.

Рекомендации:

Комментарии:

1. Привет, Танайке, спасибо за заранее, я попробовал ваш скрипт, это была работа…pdf-файл успешно отправлен, но он продолжает отправлять дубликаты со статусом «EMAIL_SENT» на нем

2. О, я забыл изменить триггер TRUE на FALSE после отправки электронного письма

3. @IndraAzenx the pdf sent successfully but it keep sent the duplicates which has status 'EMAIL_SENT' on it В этом случае, я думаю, что столбец, который вы получаете status_email , равен 10 (так как первый столбец в вашем диапазоне равен 4), а тот, в котором вы пишете EMAIL_SENT , равен 7. Это несоответствие может объяснить, почему вы получаете дубликаты.

4. О да, моя беда, это работает прямо сейчас… Спасибо