【发布时间】:2020-03-11 21:42:56
【问题描述】:
我正在尝试将电子表格中的特定工作表导出到 PDF 文件,文件将根据单元格值设置名称,我想设置导出设置,以便所有边距都设置为 0
我在网上获得了以下代码,并对其进行了修改以满足我的需要,但导出并没有像我想要的那样通过文件名,它也没有将导出边距设置为 0 并适合页面:
有没有人知道我如何通过应用程序脚本来做到这一点(如果有人有更好的脚本,我愿意尝试:))
function exportPDF() {
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sheets = sourceSpreadsheet.getSheets();
var sheetName = sourceSpreadsheet.getActiveSheet().getName();
var sourceSheet = sourceSpreadsheet.getSheetByName("Agreement");
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Agreement");
var sheet = ss.getSheetByName("Input");
var name = sheet.getRange("C3").getValue();
var company = sheet.getRange("C4").getValue();
var order = sheet.getRange("C11").getValue();
var gAcc = sheet.getRange("C12").getValue();
var pdfName = "Agreement_" & name;
if(company != "")
{
pdfName = pdfName + "_" & company & "_" & order & "_" & gAcc;
}
else
{
pdfName = pdfName + "_" & order & "_" & gAcc;
}
var parents = DriveApp.getFileById(sourceSpreadsheet.getId()).getParents();
if (parents.hasNext()) {
var folder = parents.next();
}
else {
folder = DriveApp.getRootFolder();
}
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("tmp_convert_to_pdf", folder))
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){
destSpreadsheet.deleteSheet(sheets[i]);
}
}
var destSheet = destSpreadsheet.getSheets()[0];
var sourceRange = sourceSheet.getRange("A1:I57");
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.createFile(theBlob);
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
【问题讨论】:
-
但导出并没有像我想要的那样通过文件名请您扩展一下。文件名和你想要的不一样?
标签: google-apps-script google-sheets