google-apps-script - 根据价值在谷歌表中发送多行的电子邮件
问题描述
我有一个名为“驱动程序”的选项卡,B 列中有“驱动程序名称”,F 列有“路线编号”,R 列有“驱动程序电子邮件”。
我有另一个名为“Routes”的选项卡,它显示了每条路线中的所有客户,它们按从 K 列到 S 列的路线编号排序。
我想根据他们的路线号向每个司机发送一个自定义的客户列表。
知道如何完成这项工作,我对谷歌脚本知之甚少,我做了一些基本的东西,我什至不知道起点
提前致谢
解决方案
通过电子邮件将客户姓名发送给司机
考虑这是一个起点,因为我什至没有尝试调试它。但是,如果您将数据作为 csv 提供,我将很乐意这样做。请注意,我没有要求也不想要指向您的电子表格的链接。您的编辑数据文件会很好。您可以将其发布在您的问题中,就像代码一样。任何你不想公开的东西都应该被编辑。拥有电子表格的图像也会很有帮助。
function sendCustomerlistToDrivers() {
var ss=SpreadsheetApp.getActive();
var dsh=ss.getSheetByName('Driver');
var dsr=2;//drivers starting row
var drg=dsh.getRange(dsr,1,dsh.getLastRow()-dsr+1,dsh.getLastColumn());
var dv=drg.getValues();
var rsh=ss.getSheetByName('Routes');
var rsr=2;//routes starting row
var rsc=11;//routes starting col
var rrg=rsh.getRange(rsr,rsc,rsh.getLastRow()-rsr+1,rsh.getLastColumn()-rsc+1);
var rv=rrg.getValues();
var rhA=rsh.getRange(rsr-1,rsc,1,rsh.getLastColumn()-rsc+1).getValues()[0];//assume header is one less than starting row
var rcols={};
rhA.forEach(function(h,i){rcols[h]=i+rsc;});
dv.forEach(function(r,i){
var driverEmail=r[17];//R
var driverRoute=r[5];//F
var driverName=r[1];//B
var custNames=rsh.getRange(rsr,rcols[driverRoute],rsh.getLastRow()-rsr+1,1).getValues().map(function(){return r[0];}).filter(function(e){return e;}).join('\n');
var msg=Utilities.formatString('\nRoute Number: %s\nCustomer Names: %s', driverRoute,custNames);
GmailApp.sendEmail(driverEmail, 'Customer Names', msg)
});
}