不允许从自定义函数执行sendEmail(),但在脚本编辑器OK不允许从自定义函数执行sendEma

2019-05-12 12:28发布

我一直试图找到一种方法来发送数据的单排特定的电子邮件地址的“活/运行”,我用我的域名中,以跟踪卡车司机和他们拿起Numbers电子表格。 我设法拼凑的使用谷歌Apps脚本编辑器提供床单码这一点:

function sendEmail()
{
   var sheet = SpreadsheetApp.getActiveSheet();
   var activeRow = sheet.getActiveCell().getRow();
   var cellID = "H" + activeRow;    
   var dataRange = sheet.getRange(activeRow, 1, 1, 6);
   var EMAIL_SENT = "EMAIL_SENT";
   var data = dataRange.getValues();
   Logger.log(data[0][0]);

   var emailAddress = usercellnum@carrier.net;
   var message = data;
   var subject = "CG-PU#";
   var emailSent = sheet.getRange(cellID).getValue();

   if (emailSent != "EMAIL_SENT")
   {
     MailApp.sendEmail(emailAddress, subject, message);
     var cell = sheet.getRange(cellID);
     cell.setValue(EMAIL_SENT);
   }
  }
SpreadsheetApp.flush();  
}

无论如何,我可以打电话从细胞的功能在我的电子表格像=sendEmail()它应该只从活动行发送的信息,然后标记该行作为EMAIL_SENT所以我不小心做一遍。

该脚本运行完美的,如果我从里面的脚本编辑器,以及硬编码的电子邮件地址运行它,但如果我试图从电子表格本身我得到的消息运行 - >错误:您没有权限拨打sendEmail(第19行,文件 “CPS_sendEmail.gs”)。

任何这方面的帮助是非常感谢! 这将有助于保持我的用户运行背到MS Excel和Outlook。 当我得到的这部分内容的工作,我真的很喜欢它,如果我能有功能显示的地址列表,用户可以从中选择,或者从有记忆和类型的驱动器解决保持用户的其它手段运营商,但我很想只是有这么多的它作为预期工作。

该脚本会/应只允许在我的谷歌域名与我的用户运行,并在第一时间我执行时 - 我相信我通过授权过程去了,但不真正了解的事情的一部分。

他们目前正在使用的MS Excel / Outlook和他们复制并粘贴一行到,他们可以利用自己的人脉,从选择的电子邮件。 如果我不能获得使用谷歌联系人的功能,我正在考虑利用查找功能或某事创建驱动程序的纸张 - 一种痛苦必须得跟上,当接触是正确的有一个名单 - 但亚做什么啊,你必须做!

Answer 1:

通读权限和自定义功能 。 由于自定义函数(脚本的电子表格函数调用)是开放的电子表格中的任何用户,他们不允许使用需要身份验证的任何服务。 这就是为什么你不能从一个发送邮件。

这比授权的脚本访问您的服务的过程不同。 这确实让错误信息混乱,但放心,正要你调用脚本的方式。

虽然没有问题,因为一个自定义的功能是必须执行这类型的行动,因为该功能将被重新评估每一个有在电子表格中的变化,发送许多电子邮件,更不是你想要的时间一个坏的方式。

我建议你为这个操作创建一个菜单项来代替。 (看看你是否创建一个新的电子表格的脚本编辑器中提供的示例代码。)的工作流程是将光标移到要处理的行,然后使用菜单“做起来很”,这将调用你的脚本。



文章来源: Not allowed to execute sendEmail() from custom function, but OK in script editor