如何解决如何将Google工作表的工作PDF附加到电子邮件草稿上?
我有一个脚本,用于将Google表格打开,重命名和导出为pdf。然后,该工作表将被添加到电子邮件草稿中。我已经使用此脚本两年了,但出于某种原因,pdf附件将不再打开。
我收到的错误消息是“ Adobe Acrobat Reader无法打开[File Name.pdf],因为它不是受支持的文件类型,或者因为文件已损坏。”我直接转到Google工作表并手动将其导出为pdf,我可以打开它而不会出现问题,因此它肯定与脚本相关。
能否请您查看以下脚本,看看是否可以解决我的问题?
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openByUrl(Logger.getLog());
var first = ss.getSheetByName("BHC AP Vendor Payment");
var vendorname = first.getRange(2,1).getValue();
var paymentdate = first.getRange(2,22).getDisplayValue();
// renames the google sheet to the data that is in 2nd Row,1st Column
ss.rename('BHC '+vendorname+' Payment ['+paymentdate+']');
var sheet = ss.getSheetByName('BHC AP Vendor Payment'); //returns the sheet named 'BHC AP Vendor Payment'
sheet.setName('BHC '+vendorname+' Payment ['+paymentdate+']');
var lastRow = sheet.getLastRow(); //returns integer last row
var url = ss.getUrl();
//remove the trailing 'edit' from the url
url = url.replace(/edit$/,'');
//additional parameters for exporting the sheet as a pdf
var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf
//below parameters are optional...
'&size=letter' + //paper size
'&portrait=false' + //orientation,false for landscape
'&fitw=true' + //fit to width,false for actual size
'&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional headers and footers
'&gridlines=false' + //hide gridlines
'&fzr=false' + //do not repeat row headers (frozen rows) on each page
'&gid=' + sheet.getSheetId(); //the sheet's Id
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url + url_ext,{
headers: {
'Authorization': 'Bearer ' + token
}
});
var blob = response.getBlob().setName(ss.getName() + '.pdf');
// Create a draft email with a file from Google Drive attached as a PDF.
var doc = DocumentApp.openById(*sample document*);
var body = doc.getBody();
var bodytext = body.getText();
var apEmail = *sample email address*;
var subject = 'Payment ['+vendorname+']';
GmailApp.createDraft('',subject,bodytext,{
cc: apEmail,from: apEmail,attachments: [blob
]
谢谢!
解决方法
修改:
请您尝试以下两个修改点:
-
而不是:
url = url.replace(/edit$/,'');
使用:
url = url.replace(/\/edit.*$/,'');
-
,而不是:
var url_ext = 'export?...'
使用:
var url_ext = '/export?...'
完整代码:
var ss = SpreadsheetApp.openByUrl(Logger.getLog());
var first = ss.getSheetByName("BHC AP Vendor Payment");
var vendorname = first.getRange(2,1).getValue();
var paymentdate = first.getRange(2,22).getDisplayValue();
// renames the google sheet to the data that is in 2nd Row,1st Column
ss.rename('BHC '+vendorname+' Payment ['+paymentdate+']');
var sheet = ss.getSheetByName('BHC AP Vendor Payment'); //returns the sheet named 'BHC AP Vendor Payment'
sheet.setName('BHC '+vendorname+' Payment ['+paymentdate+']');
var lastRow = sheet.getLastRow(); //returns integer last row
//remove the trailing 'edit' from the url
url = url.replace(/\/edit.*$/,'');
//additional parameters for exporting the sheet as a pdf
var url_ext = '/export?exportFormat=pdf&format=pdf' + //export as pdf
//below parameters are optional...
'&size=letter' + //paper size
'&portrait=false' + //orientation,false for landscape
'&fitw=true' + //fit to width,false for actual size
'&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional headers and footers
'&gridlines=false' + //hide gridlines
'&fzr=false' + //do not repeat row headers (frozen rows) on each page
'&gid=' + sheet.getSheetId(); //the sheet's Id
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url + url_ext,{
headers: {
'Authorization': 'Bearer ' + token
}
});
var blob = response.getBlob().getAs('application/pdf').setName(ss.getName() + '.pdf');
// Create a draft email with a file from Google Drive attached as a PDF.
var doc = DocumentApp.openById(*sample document*);
var body = doc.getBody();
var bodytext = body.getText();
var apEmail = *sample email address*;
var subject = 'Payment ['+vendorname+']';
GmailApp.createDraft('',subject,bodytext,{
cc: apEmail,from: apEmail,attachments: [blob
]})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。