Google apps script 如何调整脚本中的自定义大小页边距和纸张大小以将google电子表格保存为PDF格式?
我有一个脚本,可以将电子表格保存为pdf格式,但我无法编辑所需的页边距和纸张大小Google apps script 如何调整脚本中的自定义大小页边距和纸张大小以将google电子表格保存为PDF格式?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本,可以将电子表格保存为pdf格式,但我无法编辑所需的页边距和纸张大小 function Testando() { var spreadsheet = SpreadsheetApp.getActive(); SpreadsheetApp.flush(); //make pdf var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/' + 'XXXXXXXXXXX
function Testando() {
var spreadsheet = SpreadsheetApp.getActive();
SpreadsheetApp.flush();
//make pdf
var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' //the file ID
+ '/export?exportFormat=pdf&format=pdf'
+ '&size=LETTER'
+ '&portrait=true'
+ '&fitw=true'
+ '&top_margin=0.50'
+ '&bottom_margin=0.50'
+ '&left_margin=0.50'
+ '&right_margin=0.50'
+ '&sheetnames=false&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='
+ 'XXXXXXXXXXXXXXXXXXXXXX'; //the sheet's Id
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' + token } });
var fileid = DriveApp.createFile(docurl.getBlob()).setName('Teste.pdf').getId();
var pdf = docurl.getBlob().setName('Teste.pdf');
// var pdf = docurl.getBlob().getAs('application/pdf').setName('testss.pdf');
var filetodel = DriveApp.getFileById(fileid);
DriveApp.getRootFolder().createFolder("Teste"); //comment if folder exists
// if folder exists use next
if (DriveApp.getFoldersByName("Teste").hasNext()){
var folder = DriveApp.getFoldersByName("Teste").next();
filetodel.makeCopy(folder);
}
DriveApp.removeFile(filetodel);
}
我需要的PDF有自定义的纸张大小→ 高度:38厘米,宽度:40厘米
页面方向→ 景观
鳞片→ 配合宽度
边距→ 自定义数字:0左、0右、0开始和0结束
有人能帮我吗?以下是一些如何选择正确页边距和纸张大小的示例
//FORMATS WITH NO ADDITIONAL OPTIONS
//format=xlsx //excel
//format=ods //Open Document Spreadsheet
//format=zip //html zipped
//CSV,TSV OPTIONS***********
//format=csv // comma seperated values
// tsv // tab seperated values
//gid=sheetId // the sheetID you want to export, The first sheet will be 0. others will have a uniqe ID
// PDF OPTIONS****************
//format=pdf
//size=0,1,2..10 paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B5
//fzr=true/false repeat row headers
//portrait=true/false false = landscape
//fitw=true/false fit window or actual size
//gridlines=true/false
//printtitle=true/false
//pagenum=CENTER/UNDEFINED CENTER = show page numbers / UNDEFINED = do not show
//attachment = true/false dunno? Leave this as true
//gid=sheetId Sheet Id if you want a specific sheet. The first sheet will be 0. others will have a uniqe ID.
// Leave this off for all sheets.
// EXPORT RANGE OPTIONS FOR PDF
//need all the below to export a range
//gid=sheetId must be included. The first sheet will be 0. others will have a uniqe ID
//ir=false seems to be always false
//ic=false same as ir
//r1=Start Row number - 1 row 1 would be 0 , row 15 wold be 14
//c1=Start Column number - 1 column 1 would be 0, column 8 would be 7
//r2=End Row number
//c2=End Column number
也就是说,您的var应该是:
var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' //the file ID
+ '/export?format=pdf'
+ '&size=0'
+ '&portrait=false'
+ '&fitw=true'
+ '&top_margin=0'
+ '&bottom_margin=0'
+ '&left_margin=0'
+ '&right_margin=0'
+ '&sheetnames=false&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=FALSE'
+ '&gid='
+ 'XXXXXXXXXXXXXXXXXXXXXX';
现在的PDF大小我不认为可以更改为特定的大小,因为已经有预定义的大小。我进行了调查,但没有发现任何帮助,我希望这对您有所帮助。这是对您请求的回应: 顺便问一下,您能否帮助我编辑脚本,使PDF格式保存的文件名等于电子表格“工作”页面“B5”单元格中的值 您可以使用此行从工作表中获取文件名
// Get filename from sheet "Work", cell "B5"
var fileName = spreadsheet.getSheetByName("WORK").getRange("B5").getValue();
然后使用设置新文件的名称
.setName(fileName);
还有几行代码可以优化。我添加了一些评论来解释。希望这有助于:
function Testando() {
var spreadsheet = SpreadsheetApp.getActive();
SpreadsheetApp.flush();
//make pdf
var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/' + // Best to place the line break after '+'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' + //the file ID
'/export?exportFormat=pdf&format=pdf' +
'&size=LETTER' +
'&portrait=true' +
'&fitw=true' +
'&top_margin=0.50' +
'&bottom_margin=0.50' +
'&left_margin=0.50' +
'&right_margin=0.50' +
'&sheetnames=false&printtitle=false' +
'&pagenum=false' +
'&gridlines=false' +
'&fzr=FALSE' +
'&gid=' +
'XXXXXXXXXXXXXXXXXXXXXX'; //the sheet's Id
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' + token } });
var pdfBlob = docurl.getBlob();
// Get filename from sheet "Work", cell "B5"
var fileName = spreadsheet.getSheetByName("WORK").getRange("B5").getValue();
// Create file from blob and name it
// The newFile is placed in the root folder by default
var newFile = DriveApp.createFile(pdfBlob).setName(fileName);
// if folder exists use next
if (DriveApp.getFoldersByName("Teste").hasNext()){
var folder = DriveApp.getFoldersByName("Teste").next();
// if folder does not exist
} else {
var folder = DriveApp.createFolder("Teste");// new folder created in the root folder by default
}
folder.addFile(newFile); // add new file to folder
DriveApp.removeFile(newFile); // remove file from root folder
}
我明白,无论如何,非常感谢你抽出时间来帮助我@Mario-R。顺便问一下,您能否帮助我编辑脚本,使PDF格式保存的文件名等于电子表格“工作”页面“B5”单元格中的值?