自动从Google表格发送包含表格的电子邮件

时间:2014-07-08 17:45:07

标签: google-apps-script

我在Google表格中创建了一个表格,我希望每5天自动将该表格(25行,2列)发送到特定的电子邮件。

我已经知道如何通过脚本发送电子邮件,基本上你使用MailApp.sendEmail。

function sendFuelcount() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  sheet.setActiveSheet(sheet.getSheets()[0]);
  var column1 = sheet.getRange("D2:D25").getValue();
  var column2 = sheet.getRange("A2:A25").getValue();
  var data = Utilities.formatDate(new Date(), "GMT", "dd-MMM-yyyy")
  var msg = ""+nome+" "+fuel+"\n"

  MailApp.sendEmail("abcd@gmail.com",  ""+data+"", msg, {
                    name: 'Auto Message'});

这是到目前为止的代码,但不幸的是,它只写了两列的第一行而不是25 x 2的值。

在电子邮件中我得到:

Column11 Column12

我在电子邮件正文中想要的是: 第11栏第12栏 第21栏第22栏 Column31 Column32 第41栏第42栏 第51栏第52栏

直到第25,1和25,2列或Google表格的副本。

希望我已经说清楚了。

谢谢。

编辑:下面的答案可以解决导出所有值的问题,但不是有条理的。

我在电子邮件中收到的是:

A,B,C,D,...,i
1,2,3,4,...,j

我想要的是:

A - 1
B - 2
C - 3
D - 4
i - j

有办法做到这一点吗?意思是如何在电子邮件中组织和显示。就像一张桌子。

2 个答案:

答案 0 :(得分:0)

您必须使用getValues()而不是getValue()

答案 1 :(得分:0)

我设法做到了:

    function sendFuelcount() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  sheet.setActiveSheet(sheet.getSheets()[0]);

  var nom0 = sheet.getRange("A1").getValue();
  var fue0 = sheet.getRange("D1").getValue();
  var line0 = nome0 + "......" + fuel0;

  var nom1 = sheet.getRange("A2").getValue();
  var fue1 = sheet.getRange("D2").getValue();
  var line1 = nome1 + "......" + fuel1;

  var nome2 = sheet.getRange("A3").getValue();
  var fuel2 = sheet.getRange("D3").getValue();
  var line2 = nome2 + "......" + fuel2;

  var nom3 = sheet.getRange("A4").getValue();
  var fue3 = sheet.getRange("D4").getValue();
  var line3 = nome3 + "......" + fuel3;

  var nom4 = sheet.getRange("A5").getValue();
  var fue4 = sheet.getRange("D5").getValue();
  var line4 = nome4 + "......" + fuel4;

  var nom5 = sheet.getRange("A6").getValue();
  var fue5 = sheet.getRange("D6").getValue();
  var line5 = nome5 + "......" + fuel5;

  var data = Utilities.formatDate(new Date(), "GMT", "dd-MMM-yyyy") //define a data

  var msg = ""+line0+"\n"+line1+"\n"+line2+"\n"+line3+"\n"+line4+"\n"+line5+" \n EMAIL GERADO AUTOMATICAMENTE"

  MailApp.sendEmail("abcd@abcd.com",  ""+data+"", msg, {
                    name: 'Auto Message'});
}

我设法得到这个结果:

Ba......(L)
eda......21
Alf......601
Arcs......95
Aamar......16
Canco......45
  EMAIL GERADO AUTOMATICAMENTE

这更好,但不是我想要的。我想要的(或创建一个表):

Ba.......(L)
eda......21
Alf......601
Arcs.....95
Aamar....16
Canco....45

  EMAIL GERADO AUTOMATICAMENTE

这就是我想要的,但我认为代码过于复杂,我必须重复25次。我不知道如何正确使用For。但我认为这在这里很有用。

谢谢。