问题描述
我已经转了好几个小时。我有一些代码将电子表格转换为pdf,并且工作正常。但是,我不得不重写此代码以更改所有者,并且它不再起作用。
function savePDFs( optSSId,optSheetId ) {
// If a sheet ID was provided,open that sheet,otherwise assume script is
// sheet-bound,and open the active spreadsheet.
var ss = (optSSId) ? SpreadsheetApp.openById(optSSId) : SpreadsheetApp.getActiveSpreadsheet();
// Get URL of spreadsheet,and remove the trailing 'edit'
var url = ss.getUrl().replace(/edit$/,'');
// Get folder containing spreadsheet,for later export
var parents = DriveApp.getFileById(ss.getId()).getParents();
if (parents.hasNext()) {
var folder = parents.next();
}
else {
folder = DriveApp.getRootFolder();
}
// Get array of all sheets in spreadsheet
var sheets = ss.getSheets();
// Loop through all sheets,generating PDF files.
for (var i=0; i<sheets.length; i++) {
var sheet = sheets[i];
// If provided a optSheetId,only save it.
if (optSheetId && optSheetId !== sheet.getSheetId()) continue;
//additional parameters for exporting the sheet as a pdf
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ '&gid=' + sheet.getSheetId() //the sheet's Id
// following parameters are optional...
+ '&size=A4' // paper size
+ '&portrait=false' // orientation,false for landscape
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=MIDDLE' //TOP/MIDDLE/BottOM
+ '&scale=4' //1= normal 100% / 2= Fit to width / 3= Fit to height / 4= Fit to Page
+ '&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
console.log(url_ext);
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getoAuthToken()
}
}
var response = UrlFetchApp.fetch(url + url_ext,options);
var blob = response.getBlob().setName(ss.getName() + '.pdf').setContentTypeFromExtension();
//from here you should be able to use and manipulate the blob to send and email or create a file per usual.
//In this example,I save the pdf to drive
return folder.createFile(blob).getId();
}
}
当我调用此函数时,会进行处理,但是生成的PDF文件已损坏。你知道为什么吗?
请注意,当我测试以下用于生成PDF的网址时,它可以正常工作,并且返回的PDF有效。他们似乎是Mime转换上的问题
https://docs.google.com/spreadsheets/d/ >> / export?exportFormat = pdf&format = pdf&gid = >>&size = A4&portrait = false&horizontal_alignment = CENTER&vertical_alignment = MIDDLE&scale = 4&sheetnames = false&printtitle = false&pagenumbers = false&r = false
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)