Мой MailApp не будет отправлять электронные письма GoogleScript - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь отправить электронное письмо администратору определенного отдела, который находится на определенном листе. Все идет гладко, за исключением того, что почта никогда не отправляется. Мой сценарий делает больше, чем просто отправку почты, но плохо, но именно мой код. Кстати, это мой первый опыт работы со скриптом Google, поэтому не стесняйтесь улучшать мой скрипт.

function onEdit(event) 
{
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var r = s.getActiveRange();

  var completerPar = s.getRange(r.getRow(),9);
  var completerQuand = s.getRange(r.getRow(),10);

  if(r.getColumn() == 8 && r.getValue() == true) 
  {
    if ( s.getName() == "RepFormulaireDemande")
    {
      var row = r.getRow();
      r.setValue(false);
      var numColumns = s.getLastColumn();  
      var range = s.getRange(row,3);   
      var Departement = range.getDisplayValue();
      var targetSheet = ss.getSheetByName(Departement);
      var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
      range = s.getRange(row,7);

      s.getRange(row, 1, 1, numColumns).copyTo(target);
      s.getRange(row, 1, 1, numColumns).setBackgroundRGB(0,255, 0);
      r.setValue("Envoyé");

      //avertissement à l'administrateur de département
      s = ss.getSheetByName("Administrateurs");
      var column = 2
      range = s.getRange(1,column);
      while (range.getDisplayValue() != Departement)
      {
        column += 1
        range = s.getRange(1,column);
      }
      range = s.getRange(2,column);
      for (var x = 3 ; x - 2 <= range.getDisplayValue(); x++)
      {  
        var emailRange = s.getRange(x,column);
        var emailAdresse = emailRange.getDisplayValue();
        var message = "La page " + Departement + " du HelpDesk a été mise à jour!;
        var subject = "HelpDesk" + Departement;
        MailApp.sendEmail(emailAdresse,subject,message);
      } 
    }
    else if(completerPar.getValue() !== "" && completerQuand.getValue() !== "")
    {
      var row = r.getRow();
      r.setValue("fini");
      var numColumns = s.getLastColumn();  
      var targetSheet = ss.getSheetByName("Completer");
      var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
      s.getRange(row, 1, 1, numColumns).setBackgroundRGB(255, 255, 255);
      s.getRange(row, 1, 1, numColumns).copyTo(target);
      s.deleteRow(row);
      var delai = targetSheet.getRange(targetSheet.getLastRow(), 11);
      row = targetSheet.getLastRow();
      delai.setValue('=IF(DAYS(J' + row + '; $A' + row + ') = 1;DAYS(J' + row + '; $A' + row + ') &  " jour"; DAYS(J' + row + '; $A' + row + ') & " jours")' );
    }
    else
    {
      r.setValue(false);
    }
  }
}

*yes my script has some french in it sorry*

1 Ответ

0 голосов
/ 20 января 2020

Извините, но если вы используете Простой триггер , вы не сможете отправлять электронные письма, поскольку Ограничения говорят:

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

В качестве обходного пути можно использовать Устанавливаемый триггер , но также с учетом его Ограничения для отправки писем:

Устанавливаемые триггеры всегда запускаются под учетной записью человека, который их создал. Например, если вы создаете устанавливаемый триггер открытия, он запускается, когда ваш коллега открывает документ (если у вашего коллеги есть права на редактирование), но он запускается как ваша учетная запись. Это означает, что если вы создаете триггер для отправки электронного письма при открытии документа, электронное письмо всегда отправляется из вашей учетной записи, а не обязательно из учетной записи, которая открыла документ. Тем не менее, вы можете создать устанавливаемый триггер для каждой учетной записи, что приведет к отправке одного письма от каждой учетной записи.

Теперь, чтобы настроить устанавливаемый триггер, выполните следующие действия:

1) Go в ваш проект Apps Script

2) Нажмите «Правка» -> триггеры текущего проекта

3) Нажмите «+ Добавить триггер»

4) Выберите:

Выберите, какую функцию запустить -> Function Name

Выберите источник события-> Из электронной таблицы

Выберите тип события -> При редактировании

5) Нажмите Сохранить

Надеюсь, это поможет вам, и ограничения триггеров не сильно повлияют на вас.

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