我正在使用此脚本将当前选项卡以 pdf 格式保存到特定文件夹
function SaveAsPDF() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSpreadsheet = SpreadsheetApp.getActive(); // Get active spreadsheet.
var sheetName = sourceSpreadsheet.getActiveSheet().getName();
var pdfName = sheetName + ".pdf"; // Set the output filename as SheetName.
folder = DriveApp.getFolderById('ID');
var theBlob = createblobpdf(sheetName, pdfName);
var existing = folder.getFilesByName(pdfName); //returns file iterator;
var hasFile = existing.hasNext(); //check if iterator isn't empty;
if (hasFile) {
var duplicate = existing.next(); //access file;
//delete file;
var durl = 'https://www.googleapis.com/drive/v3/files/' + duplicate.getId();
var token = ScriptApp.getOAuthToken();
var dres = UrlFetchApp.fetch(durl, {
method: 'delete',
muteHttpExceptions: true,
headers: { 'Authorization': 'Bearer ' + token }
});
if (dres.getResponseCode() >= 400) {
//handle errors;
}
}
var newFile = folder.createFile(theBlob);
sourceSpreadsheet.toast("Saved ", "Success");
}
function createblobpdf(sheetName, pdfName) {
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var url = 'https://docs.google.com/spreadsheets/d/' + sourceSpreadsheet.getId()
+ '/export'
+ '?format=pdf'
+ '&size=letter' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&scale=4' // 1= Normal 100% / 2= Fit to width / 3= Fit to height / 4= Fit to Page
+ '&fitw=true' // fit to width, false for actual size
+ '&top_margin=1.00' // All four margins must be set!
+ '&bottom_margin=0.00' // All four margins must be set!
+ '&left_margin=2.00' // All four margins must be set!
+ '&right_margin=0.00' // All four margins must be set!
+ '&sheetnames=true&printtitle=false' // hide optional headers and footers
+ '&pagenum=RIGHT&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=TOP' //TOP/MIDDLE/BOTTOM
+ '&gid=' + sourceSheet.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
// request export url
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var theBlob = response.getBlob().setName(pdfName);
return theBlob;
};
我的问题是我无法格式化 pdf,我一直在尝试不同的方法,但就像没有响应我的更改(大小、比例、边距 fzr=false 等)我做错了什么吗? 我需要的主要是适合字母大小的高度
有什么帮助吗?
答案 0 :(得分:0)
错误一定在别处。
请注意,您有一个循环,可以在创建新文件之前检查文件是否已经存在。大多数情况下,您没有创建新文件,因为文件已经存在。
试试下面的代码:
sched_process_free
它会在您的云端硬盘的根目录中创建一个名为 function SaveAsPDF() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSpreadsheet = SpreadsheetApp.getActive(); // Get active spreadsheet.
var sheetName = sourceSpreadsheet.getActiveSheet().getName();
var pdfName = "thisFileisNew.pdf"; // Set the output filename as SheetName.
// folder = DriveApp.getFolderById('ID');
var theBlob = createblobpdf(sheetName, pdfName);
var newFile = DriveApp.createFile(theBlob);
sourceSpreadsheet.toast("Saved ", "Success");
}
function createblobpdf(sheetName, pdfName) {
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var url = 'https://docs.google.com/spreadsheets/d/' + sourceSpreadsheet.getId()
+ '/export'
+ '?format=pdf'
+ '&size=A4' // paper size legal / letter / A4
+ '&portrait=false' // orientation, false for landscape
+ '&scale=4' // 1= Normal 100% / 2= Fit to width / 3= Fit to height / 4= Fit to Page
+ '&fitw=true' // fit to width, false for actual size
+ '&top_margin=1.00' // All four margins must be set!
+ '&bottom_margin=0.00' // All four margins must be set!
+ '&left_margin=2.00' // All four margins must be set!
+ '&right_margin=0.00' // All four margins must be set!
+ '&sheetnames=true&printtitle=false' // hide optional headers and footers
+ '&pagenum=RIGHT&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=TOP' //TOP/MIDDLE/BOTTOM
+ '&gid=' + sourceSheet.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
// request export url
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var theBlob = response.getBlob().setName(pdfName);
return theBlob;
};
的文件 - 我将格式设置为横向,因此您可以更轻松地看到格式的更改。