#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. О да, моя беда, это работает прямо сейчас… Спасибо