0

我正在尝试向某个工作表中某个部门的管理员发送电子邮件。一切都很顺利,除了邮件从不发送。我的脚本做的不仅仅是发送邮件,但它确实是我的代码。顺便说一句,这是我第一次使用谷歌脚本,所以请随时改进我的脚本。

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*
4

1 回答 1

0

抱歉,但如果您使用简单触发器,您将无法发送电子邮件,因为限制说明:

他们无法访问需要授权的服务。例如,一个简单的触发器无法发送电子邮件,因为 Gmail 服务需要授权,但一个简单的触发器可以使用匿名的语言服务翻译一个短语。

作为一种解决方法,您可以使用Installable Trigger,但还要考虑其发送邮件的限制:

可安装触发器始终在创建它们的人的帐户下运行。例如,如果您创建一个可安装的打开触发器,它会在您的同事打开文档时运行(如果您的同事具有编辑权限),但它会作为您的帐户运行。这意味着,如果您创建触发器以在打开文档时发送电子邮件,则电子邮件始终是从您的帐户发送的,而不一定是打开文档的帐户。但是,您可以为每个帐户创建一个可安装的触发器,这将导致从每个帐户发送一封电子邮件。

现在,要设置可安装触发器,请执行以下操作:

1) 转到您的 Apps 脚本项目

2)点击编辑->当前项目的触发器

3)点击“+添加触发器”

4) 选择:

选择要运行的函数->Function Name

选择事件源-> 从电子表格

选择事件类型 -> 编辑

5) 点击保存

我希望这可以帮助您,并且触发器的限制不会对您产生太大影响。

于 2020-01-20T11:14:34.280 回答