I have written a script function to get google sheet data and send the email as an attached PDF. I have used here pivot tables in the google sheet.
The problem is here. after the filtered pivot table and then if I send an email.it sent only without filter data. That means is default values only export as pdf.
How to send an email pdf with current filtered data?
function sendEmail(){
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var getTabsheetName=ss.getSheetByName('report');
var url = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
+ ss.getId() //Your File ID
+ '/export?exportFormat=pdf&format=pdf'
+ '&size=LETTER'
+ '&portrait=true'
+ '&fitw=true'
+ '&top_margin=0.50'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=false&printtitle=false&pagenumbers=true'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='
+ getTabsheetName.getSheetId(); //the sheet's Id
var emailsheet=ss.getSheetByName('Email');
var emailContentsheet=ss.getSheetByName('EmailContent');
var subject = emailContentsheet.getRange(2,1).getValue();
var n=emailsheet.getLastRow();
var params = {
method : "get",
headers : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
var blob = UrlFetchApp.fetch(url, params).getBlob().setName('Report.pdf');
for (var i = 2; i < n+1 ; i++ ) {
// SpreadsheetApp.flush();
var emailAddress = emailsheet.getRange(i,2).getValue();
var name=emailsheet.getRange(i,1).getValue();
var message = emailContentsheet.getRange(2,2).getValue();
var returnData = [name,message];
var templ = HtmlService.createTemplateFromFile('index');
templ.data = returnData;
var htmlboday = templ.evaluate().getContent();
MailApp.sendEmail({
to: emailAddress,
subject: subject,
htmlBody: htmlboday,
attachments:[blob]
});
}
} catch (f) {
Logger.log(f.toString());
}
}