javascript - 如何在更改的 Google 工作表数据上最后加载并使用脚本以 PDF 格式发送电子邮件
问题描述
我编写了一个脚本函数来获取谷歌表格数据并将电子邮件作为附件发送 PDF。我在这里使用了谷歌表格中的数据透视表。
问题就在这里。在过滤后的数据透视表之后,然后如果我发送电子邮件。它只发送没有过滤数据。这意味着默认值仅导出为 pdf。
如何发送包含当前过滤数据的电子邮件 pdf?
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());
}
}
解决方案
推荐阅读
- html - 播放视频时如何设置下载弹出控件的位置?
- c# - TFS REST API 获取构建失败的项目
- node.js - 无法通过 nodejs 连接到我的 ms-sql 服务器
- vba - VBA插入可以被许多用户使用的TOC
- apache-kafka - kafka分区中每条记录的记录大小是如何设置的?
- xamarin - Xamarin Android 无法重新访问共享文件
- sql - 创建一个变量表并检索@COLUMN_NAME
- html - 使用css网格在具有动态数据表的行上切换列?
- awk - 使用 awk 查找客户购买的唯一字符
- android - DialogFragment 将 EditText 焦点放在为 API 28 打开的对话框上