0
votes

I have created a table in Google Sheets and I want to send automatically that table (25 rows, 2 columns) every 5 days to a specific email.

I already know how to send email via script, basically you use 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("[email protected]",  ""+data+"", msg, {
                    name: 'Auto Message'});

This is the code so far, but unfortunately, it only writes the first row of the two columns instead of the 25 x 2 values.

In email I get:

Column11 Column12

What I want in email body is:

Column11 Column12
Column21 Column22
Column31 Column32
Column41 Column42
Column51 Column52

Until Column 25,1 and Column 25,2 or copy of the Google Sheet table.

Hope I have made myself clear.

Thank you.

EDIT: The answer below does the trick for export all values but not in a organized way.

What I get in the email is this:

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

What I want is this:

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

Is there a way to do this? Meaning how to organize and show that in the email. Like a table.

2

2 Answers

0
votes

I manage to do this:

    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("[email protected]",  ""+data+"", msg, {
                    name: 'Auto Message'});
}

I manage to get this results:

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

It's better but not what I want. What I want (or to create a table):

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

  EMAIL GERADO AUTOMATICAMENTE

This is what I want but the code I think is overly complicated, and I have to repeat that 25 times. I don't know how to properly use the For. But I think it can be useful here.

Thank you.

-1
votes

You will have to use getValues() instead of getValue()