Имя файла достигается путем перестановки кода и правильной конкатенации некоторых строк.
Я изменил ваш скрипт в нескольких местах, как показано ниже:
function exportPDF() {
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sheets = sourceSpreadsheet.getSheets();
var sheetName = sourceSpreadsheet.getActiveSheet().getName();
var sourceSheet = sourceSpreadsheet.getSheetByName("Agreement");
var name = sourceSheet.getRange("C3").getValue();
var company = sourceSheet.getRange("C4").getValue();
var order = sourceSheet.getRange("C11").getValue();
var gAcc = sourceSheet.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();
var folder;
if (parents.hasNext()) {
folder = parents.next();
}
else {
folder = DriveApp.getRootFolder();
}
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy(pdfName, 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.getDataRange();
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.setActiveSelection(sourceRange.getA1Notation());
destRange.setValues(sourcevalues);
var theBlob = getBlob();
var newFile = folder.createFile(theBlob).setName(pdfName);
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
До этого момента у вас есть создал PDF-файл с данными, которые вы хотите, и имя, которое вы хотите. Но поля все еще не те, которые вы хотите.
Установка полей PDF:
Получите BLOB-объект, используя UrlFetchApp
function getBlob(){
var url = 'https://docs.google.com/spreadsheets/d/';
var id = '<YOUR-FILE-ID>';
var url_ext = '/export?'
+'format=pdf'
+'&size=a4' //A3/A4/A5/B4/B5/letter/tabloid/legal/statement/executive/folio
+'&portrait=true' //true= Potrait / false= Landscape
+'&scale=1' //1= Normal 100% / 2= Fit to width / 3= Fit to height / 4= Fit to Page
+'&top_margin=0.00' //All four margins must be set!
+'&bottom_margin=0.00' //All four margins must be set!
+'&left_margin=0.00' //All four margins must be set!
+'&right_margin=0.00' //All four margins must be set!
+'&gridlines=true' //true/false
+'&printnotes=false' //true/false
+'&pageorder=2' //1= Down, then over / 2= Over, then down
+'&horizontal_alignment=LEFT' //LEFT/CENTER/RIGHT
+'&vertical_alignment=TOP' //TOP/MIDDLE/BOTTOM
+'&printtitle=false' //true/false
+'&sheetnames=false' //true/false
+'&fzr=false' //true/false
+'&fzc=false' //true/false
+'&attachment=false'
+'&gid=0';
// console.log(url+id+url_ext);
var blob = UrlFetchApp.fetch(url+id+url_ext).getBlob().getAs('application/pdf');
return blob;
}
Там у тебя есть это. PDF без полей, экспортированных из листа.
Примечание: Чтобы избежать аутентификации при использовании UrlFetchApp
, вы можете опубликовать свой лист c