小编Dax*_*ome的帖子

不允许通过自定义函数执行sendEmail(),但在脚本编辑器中可以执行

我一直在尝试寻找一种方法,将单行数据发送到我在域中使用的“实时/运行”电子表格中的特定电子邮件地址,以跟踪卡车司机及其接送号码。我使用表格中提供的Google 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();  
}
Run Code Online (Sandbox Code Playgroud)

我可以从电子表格中的某个单元格调用该函数的任何方式,例如=sendEmail(),它应该仅从活动行发送信息,然后将该行标记为,EMAIL_SENT这样我就不会意外地这样做。

如果我从脚本编辑器内部运行该脚本,并且对电子邮件地址进行硬编码,则该脚本运行完美,但是如果尝试从电子表格本身运行,则会收到消息->错误:您无权调用sendEmail(第19行,文件“ CPS_sendEmail.gs”)。

非常感谢您的协助!这将有助于防止我的用户再次运行MS Excel和Outlook。当这部分工作时,如果可以让该功能显示用户可以选择的地址列表,或者使用户不必记住并键入驱动程序地址和运营商,但我希望它能按预期运行。

该脚本只能(应该)与用户一起在我的Google Domain中运行,并且是我第一次执行该脚本-我确定我已经完成了授权过程,但是并没有真正理解这部分内容。

他们当前正在使用MS …

google-sheets google-apps-script custom-function

2
推荐指数
1
解决办法
3296
查看次数