微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Google Apps脚本从Google表格导出PDF时的setName

如何解决使用Google Apps脚本从Google表格导出PDF时的setName

我有这个脚本可以使用Google Apps脚本将三张单独的工作表导出为PDF,除了在每种情况下以文件名export.pdf导出PDF之外,它都可以正常工作。我想将它们分别重命名为“昨天”,“过去7天”和“过去30天”,请问有人可以帮助我实现这一目标吗?

//Menu in Google Sheet

function onopen() {

 var ui = SpreadsheetApp.getUi();

 ui.createMenu('Dashboard')

   .addItem('Email Dashboard','emailDashboard')

   .addToUi();

}

//Convert dashboard to PDF and email a copy to user
function emailDashboard() {

 // get sheet id

 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var id = ss.getId();

 // setup sheets
 var yesterdaySheet = ss.getSheetByName('Yesterday');
 var last7DaysSheet = ss.getSheetByName('Last 7 Days');
 var last30daysSheet = ss.getSheetByName('Last 30 Days');
 var settingsSheet = ss.getSheetByName('Settings');
 var dashboardURL = ss.getUrl() + "?usp=sharing";

 // Send the PDF of the spreadsheet to this email address
 // get this from the settings sheet
 var email = settingsSheet.getRange(8,2).getValue();
 var cc_email = settingsSheet.getRange(9,2).getValue();
 var bcc_email = settingsSheet.getRange(10,2).getValue();

 // Subject of email message
 var subject = "Dashboard PDF generated from " + ss.getName() + " - " + new Date().toLocaleString(); 

 // Email Body
 var body = `A pdf copy of your dashboard is attached.<br><br>

  To access this Google Sheet,; 
   <a href="` + dashboardURL + `" >click here</a>`;


 // Base URL
 var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?";
 var url_ext = 'exportFormat=pdf&format=pdf&size=A4&portrait=false&fitw=true&gid=';
  
 // Auth value
 var token = ScriptApp.getoAuthToken();

 var options = { 

  headers: { 'Authorization': 'Bearer ' + token }

   }

 // helps initialize first time using the script
 var driveCall = DriveApp.getRootFolder();  

 // create the pdf
 var responseYesterday = UrlFetchApp.fetch(url + url_ext + yesterdaySheet.getSheetId(),options);
 var response7Days = UrlFetchApp.fetch(url + url_ext + last7DaysSheet.getSheetId(),options);
 var response30days = UrlFetchApp.fetch(url + url_ext + last30daysSheet.getSheetId(),options);
 

 // send the email with the PDF attachment
 GmailApp.sendEmail(email,subject,body,{
  cc: cc_email,bcc: bcc_email,htmlBody: body,attachments:[responseYesterday,response7Days,response30days]   
 });
}

解决方法

说明:

只需在pdf创建部分之后添加以下三行:

var blob_Y = responseYesterday.getBlob().setName('Yesterday' + '.pdf');
var blob_L7D = response7Days.getBlob().setName('Last 7 Days' + '.pdf');
var blob_L30D = response30Days.getBlob().setName('Last 30 Days' + '.pdf');

然后更改此部分:

 GmailApp.sendEmail(email,subject,body,{
  cc: cc_email,bcc: bcc_email,htmlBody: body,attachments:[blob_Y,blob_L7D,blob_L30D ]   
 });

解决方案:

//Menu in Google Sheet

function onOpen() {

 var ui = SpreadsheetApp.getUi();

 ui.createMenu('Dashboard')

   .addItem('Email Dashboard','emailDashboard')

   .addToUi();

}

//Convert dashboard to PDF and email a copy to user
function emailDashboard() {

 // get sheet id

 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var id = ss.getId();

 // setup sheets
 var yesterdaySheet = ss.getSheetByName('Yesterday');
 var last7DaysSheet = ss.getSheetByName('Last 7 Days');
 var last30DaysSheet = ss.getSheetByName('Last 30 Days');
 var settingsSheet = ss.getSheetByName('Settings');
 var dashboardURL = ss.getUrl() + "?usp=sharing";

 // Send the PDF of the spreadsheet to this email address
 // get this from the settings sheet
 var email = settingsSheet.getRange(8,2).getValue();
 var cc_email = settingsSheet.getRange(9,2).getValue();
 var bcc_email = settingsSheet.getRange(10,2).getValue();

 // Subject of email message
 var subject = "Dashboard PDF generated from " + ss.getName() + " - " + new Date().toLocaleString(); 

 // Email Body
 var body = `A pdf copy of your dashboard is attached.<br><br>

  To access this Google Sheet,; 
   <a href="` + dashboardURL + `" >click here</a>`;


 // Base URL
 var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?";
 var url_ext = 'exportFormat=pdf&format=pdf&size=A4&portrait=false&fitw=true&gid=';
  
 // Auth value
 var token = ScriptApp.getOAuthToken();

 var options = { 

  headers: { 'Authorization': 'Bearer ' + token }

   }

 // helps initialize first time using the script
 var driveCall = DriveApp.getRootFolder();  

 // create the pdf
 var responseYesterday = UrlFetchApp.fetch(url + url_ext + yesterdaySheet.getSheetId(),options);
 var response7Days = UrlFetchApp.fetch(url + url_ext + last7DaysSheet.getSheetId(),options);
 var response30Days = UrlFetchApp.fetch(url + url_ext + last30DaysSheet.getSheetId(),options);

 var blob_Y = responseYesterday.getBlob().setName('Yesterday' + '.pdf');
 var blob_L7D = response7Days.getBlob().setName('Last 7 Days' + '.pdf');
 var blob_L30D = response30Days.getBlob().setName('Last 30 Days' + '.pdf');
 

 GmailApp.sendEmail(email,{
 cc: cc_email,blob_L30D ]   
 });
 }
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。