我的邮件应用程序不会发送任何电子邮件谷歌脚本
My MailApp won't send any emails GoogleScript
我正在尝试向某个 sheet 中的某个部门的管理员发送电子邮件。一切顺利,除了邮件永远不会发送。我的脚本比发送邮件多了一点,但很糟糕,但正是我的代码。顺便说一下,这是我第一次使用 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*
抱歉,如果您使用 Simple Trigger you will not be able to send emails as the Restrictions 说:
They cannot access services that require authorization. For example, a
simple trigger cannot send an email because the Gmail service requires
authorization, but a simple trigger can translate a phrase with the
Language service, which is anonymous.
作为解决方法,您可以使用 Installable Trigger, but also taking into consideration its Restriction 发送邮件:
Installable triggers always run under the account of the person who
created them. For example, if you create an installable open trigger,
it runs when your colleague opens the document (if your colleague has
edit access), but it runs as your account. This means that if you
create a trigger to send an email when a document is opened, the email
is always be sent from your account, not necessarily the account that
opened the document. However, you could create an installable trigger
for each account, which would result in one email sent from each
account.
现在,要设置可安装触发器,请执行以下操作:
1) 转到您的 Apps 脚本项目
2) 点击编辑->当前项目的触发器
3) 点击“+添加触发器”
4) Select :
选择要使用的函数 运行 -> Function Name
Select 事件来源-> 来自电子表格
Select 事件类型 -> 编辑时
5) 单击保存
希望对您有所帮助,触发器的限制不会对您造成太大影响。
我正在尝试向某个 sheet 中的某个部门的管理员发送电子邮件。一切顺利,除了邮件永远不会发送。我的脚本比发送邮件多了一点,但很糟糕,但正是我的代码。顺便说一下,这是我第一次使用 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*
抱歉,如果您使用 Simple Trigger you will not be able to send emails as the Restrictions 说:
They cannot access services that require authorization. For example, a simple trigger cannot send an email because the Gmail service requires authorization, but a simple trigger can translate a phrase with the Language service, which is anonymous.
作为解决方法,您可以使用 Installable Trigger, but also taking into consideration its Restriction 发送邮件:
Installable triggers always run under the account of the person who created them. For example, if you create an installable open trigger, it runs when your colleague opens the document (if your colleague has edit access), but it runs as your account. This means that if you create a trigger to send an email when a document is opened, the email is always be sent from your account, not necessarily the account that opened the document. However, you could create an installable trigger for each account, which would result in one email sent from each account.
现在,要设置可安装触发器,请执行以下操作:
1) 转到您的 Apps 脚本项目
2) 点击编辑->当前项目的触发器
3) 点击“+添加触发器”
4) Select :
选择要使用的函数 运行 -> Function Name
Select 事件来源-> 来自电子表格
Select 事件类型 -> 编辑时
5) 单击保存
希望对您有所帮助,触发器的限制不会对您造成太大影响。