首页 > 解决方案 > 根据价值在谷歌表中发送多行的电子邮件

问题描述

我有一个名为“驱动程序”的选项卡,B 列中有“驱动程序名称”,F 列有“路线编号”,R 列有“驱动程序电子邮件”。

我有另一个名为“Routes”的选项卡,它显示了每条路线中的所有客户,它们按从 K 列到 S 列的路线编号排序。

我想根据他们的路线号向每个司机发送一个自定义的客户列表。

知道如何完成这项工作,我对谷歌脚本知之甚少,我做了一些基本的东西,我什至不知道起点

提前致谢

标签: google-apps-script

解决方案


通过电子邮件将客户姓名发送给司机

考虑这是一个起点,因为我什至没有尝试调试它。但是,如果您将数据作为 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)
  });
}

推荐阅读