Mailsender работает хорошо, когда запускается вручную, а использует неактуальные данные, когда время запущено - PullRequest
0 голосов
/ 22 сентября 2019

ребята,

простой почтовый отправитель, основанный на значении в ячейке (0 = отправить почту, 1 = не отправлять почту), + некоторые переменные для заполнения почты.

0 и 1зависит от поведения пользователей, поэтому оно может меняться каждый день.

Когда я запускаю это вручную, все отлично работает.При запуске с триггером времени (установленным ежедневно с 8 до 9 часов утра) по какой-то причине используются однодневные данные.

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

Спасибо!

function alertMail() {
 // fetch variables
 var aktivniDenRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Aktivita_log_mail").getRange("C2"); 
 var aktivniDen = aktivniDenRange.getValue();
 var gifDownloadRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Aktivita_log_mail").getRange("G2"); 
 var gifDownload = gifDownloadRange.getValue();
 var jmenoPrijmeniRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Aktivita_log_mail").getRange("D2"); 
 var jmenoPrijmeni = jmenoPrijmeniRange.getValue();
 var denTydnuRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Aktivita_log_mail").getRange("H2"); 
 var denTydnu = denTydnuRange.getValue();
   // Check if
if (aktivniDen < 1){
// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Aktivita_log_mail").getRange("E2");
var emailAddress = emailRange.getValues();

// Send Alert Email.
var message = 'Ahoj, ' + jmenoPrijmeni + ', nezapomněl/a sis zapsat včerejší aktivitu? Díky, A.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ' + gifDownload; // Second column
var subject = denTydnu + ' - Neaktivní den';
MailApp.sendEmail(emailAddress, subject, message);
}
}

1 Ответ

1 голос
/ 22 сентября 2019

Попробуйте это:

При запуске из триггера он запускается с сервера и не открывает пользовательский интерфейс для электронной таблицы, как может пользователь.Так что вам нужно открытьById ().Кроме того, поскольку все ваши данные аккуратно расположены подряд, гораздо быстрее getValues ​​() - все сразу и доступ к ним из одного массива.

function alertMail() {
  var ss=SpreadsheetApp.openById('Spreadsheet Id');
  var sh=ss.getSheetByName('Aktivita_log_mail');
  var rg=sh.getRange("C2:H2");
  var vA=rg.getValues();
  var aktivniDen=vA[0][0];
  var gifDownload=vA[0][4];
  var jmenoPrijmeni=vA[0][1];
  var denTydnu=vA[0][5];
  var emailAddress=vA[0][2];
  if (aktivniDen < 1){
    var message = 'Ahoj, ' + jmenoPrijmeni + ', nezapomněl/a sis zapsat včerejší aktivitu? Díky, A.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ' + gifDownload; // Second column
    var subject = denTydnu + ' - Neaktivní den';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...