我下面用于生成PDF附件的代码运行良好,但它们会发送电子表格中的所有数据。
任何人都可以帮助只发送指定的电子表格,比如我的代码专用表";电子邮件";而不是所有的床单?谢谢
function SendEmail() {
try {
var ss = SpreadsheetApp.getActive();
var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=pdf";
var params = {
method : "get",
headers : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
var blob = UrlFetchApp.fetch(url, params).getBlob();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Email')
var subjectrange = sheet.getRange("A20");
var subjectdata = subjectrange.getValues();
var emailranges=sheet.getRange('E14');
var emaildata=emailranges.getValue();
var username=ss.getSheetId();
blob.setName(ss.getName()+ ".pdf");
var confirm = Browser.msgBox('Send Email Confirmation','Are you sure you want to send this mail for booking request ?', Browser.Buttons.OK_CANCEL);
if(confirm=='ok') {
MailApp.sendEmail(emaildata, subjectdata, " Attachment file is: n" +subjectdata+ "- n Kindly reply your booking to this email . n Thank you - ADS Co., Ltd", {attachments: [blob]}) };} catch (f) {Logger.log(f.toString());
}
}
答案
如果你不想导出一些sheets
,你可以隐藏它们。此外,您可以使用getBlob方法导出Spreadsheet
。一旦进行了导出,就可以撤消隐藏。
假设两张纸的小代码
var sheet = ss.getSheetByName('Unwanted Sheet')
sheet.hideSheet()
var blob = ss.getBlob()
blob.setName(ss.getName())
sheet.showSheet()
使用多张图纸的完整代码
function exportSheet(sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() !== sheetName) {
sheets[i].hideSheet()
}
}
var blob = ss.getBlob()
blob.setName(ss.getName())
for (var i = 0; i < sheets.length; i++) {
sheets[i].showSheet()
}
}
一些提示
- 您不必将
.pdf
添加到blob名称中,它已经知道这是一个pdf文件,扩展名将自动显示 - 您可以使用GmailApp服务而不是MailApp,因为它更通用,功能更多。使用
MailApp
的主要原因是使用,它不需要开发者是Gmail用户
参考
- hideSheet
- showSheet
- getBlob
- GmailApp
- MailApp