Dax*_*ome 2 google-sheets google-apps-script custom-function
我一直在尝试寻找一种方法,将单行数据发送到我在域中使用的“实时/运行”电子表格中的特定电子邮件地址,以跟踪卡车司机及其接送号码。我使用表格中提供的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 Excel / Outlook,并且将行复制并粘贴到电子邮件中,以便他们可以使用联系人进行选择。如果我无法使用该功能来使用Google的联系人,则我正在考虑创建具有查找功能或类似功能的驱动程序表-当联系人在那里时,必须保留列表是一种痛苦-但您要做的事!
阅读权限和自定义功能。由于自定义函数(从电子表格函数调用的脚本)向电子表格的任何用户开放,因此不允许它们使用任何需要身份验证的服务。这就是为什么您不能从一个发送邮件的原因。
这与授权脚本访问服务的过程不同。这的确使错误消息造成混乱,但是请放心,这与调用脚本的方式差不多。
不过没问题,因为自定义功能无论如何都是执行这种类型操作的一种坏方法,因为每次电子表格中发生更改时都会重新评估该功能,从而发送比您想要的更多的电子邮件。
我建议您为此操作创建一个菜单项。(如果创建新的电子表格脚本,请参阅编辑器中提供的示例代码。)工作流程是将光标移动到要处理的行,然后使用菜单“ Make It So”,这将调用您的脚本。
| 归档时间: |
|
| 查看次数: |
3296 次 |
| 最近记录: |