尝试在Google表格中构建用于发送电子邮件的功能

时间:2019-11-26 13:50:34

标签: google-apps-script google-sheets

我一直在尝试创建一个Google表格公式,以通过MailApp发送电子邮件。

/**
*
*
*@customfunction
*/
function SendIssueMails(x) 
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("IssueCourses");
  var email = sheet.getRange(x).getValue();
  var subject = "Issue updated that needs resolution";
  var body = "Please go to your issue tracker. You have been assigned an Issue that need resolution";
  MailApp.sendEmail(email, subject, body);
  return "sent";
}

这是我编写的代码,当我将此公式放在带有x作为电子邮件ID的表格中时,它说我没有权限。我通过发送手动电子邮件在appscript中授予了权限,但它仍然显示所需的权限,我不知道在何处授予该权限。

2 个答案:

答案 0 :(得分:1)

来自documentation

  

如果您的自定义函数抛出错误消息“您没有调用X服务的权限。”,则该服务需要用户授权,因此无法在自定义函数中使用。

您不能在自定义功能中使用MailApp之类的服务。您需要以其他方式触发发送电子邮件。也许installable trigger配置为在编辑某个单元格时运行?

答案 1 :(得分:0)

Diego是正确的,电子表格上的自定义功能无法请求访问个人数据,因此您只能使用此列表中的服务:

  

支持的服务

缓存
HTML
JDBC
语言

地图
属性
试算表: 无法打开其他电子表格(SpreadsheetApp.openById()或SpreadsheetApp.openByUrl())。 网址提取
实用工具
XML

找不到您的GmailApp

  

如果您的自定义函数抛出错误消息“您没有调用X服务的权限。”,则该服务需要用户授权,因此无法在自定义函数中使用。

如文档所述:

  

要使用除上面列出的服务以外的其他服务,请创建一个自定义菜单   运行Apps脚本功能而不是编写自定义   功能。从菜单触发的功能将询问用户   必要时进行授权,因此可以使用所有应用   脚本服务。

如果您正在寻找如何从表格中调用函数的方法,则应查看“自定义”菜单:

https://developers.google.com/apps-script/guides/menus