Google apps script 以pdf格式打印电子表格,不留页边距
我试图让我的团队更轻松,所以我想让他们将我的Google Sheets文档中的给定区域打印成具有预定义页边距/打印设置的pdf。打印区域不在活动电子表格上 我刚从Excel转到电子表格。我知道一些VBA,但对气体不太了解。我做了很多研究,但我发现的所有样本都基于UiApp,不再支持它 我发现了一些线索(我认为信息缺失的地方?) 我找到的最后一个是这一个(),我在其中添加了页边距的设置(但是它是这样工作的吗?我还不能尝试,因为我不知道如何下载pdf。我尝试过做研究,但找不到任何东西。)Google apps script 以pdf格式打印电子表格,不留页边距,google-apps-script,Google Apps Script,我试图让我的团队更轻松,所以我想让他们将我的Google Sheets文档中的给定区域打印成具有预定义页边距/打印设置的pdf。打印区域不在活动电子表格上 我刚从Excel转到电子表格。我知道一些VBA,但对气体不太了解。我做了很多研究,但我发现的所有样本都基于UiApp,不再支持它 我发现了一些线索(我认为信息缺失的地方?) 我找到的最后一个是这一个(),我在其中添加了页边距的设置(但是它是这样工作的吗?我还不能尝试,因为我不知道如何下载pdf。我尝试过做研究,但找不到任何东西。)
var report = SpreadsheetApp.getActive();
var pdfName = "Angebot";
var sheetName = "Angebot";
var sourceSheet = report.getSheetByName(sheetName);
SpreadsheetApp.getActiveSpreadsheet().toast('Creating the PDF');
// export url
var url = 'https://docs.google.com/spreadsheets/d/'+report.getId()+'/export?exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=A4' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true' // fit to page width, false for actual size
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&gid='+sourceSheet.getSheetId(); // the sheet's Id
+ '&top_margin=0'
+ '&left_margin=0'
+ '&right_margin=0'
+ '&bottom_margin=0'
var token = ScriptApp.getOAuthToken();
// request export url
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var theBlob = response.getBlob().setName(pdfName+'.pdf');
//var attach = {fileName:'Monthly Report.pdf',content:pdf, mimeType:'application/pdf'};
var name = report.getRange("H1:H1").getValues(); // Get Name
var emailTo = report.getRange("H2:H2").getValues(); // Get email
var period = report.getRange("H3:H3").getValues(); // Get Reporting Period
var subject = " - TEST Monthly Report - " + period; // Construct the Subject Line
var message = "Hi " + name + ", here is your latest report for " + period; // email body text
// download pdf
}
如果要使用脚本保存PDF文件,请将
DriveApp.createFile(theBlob)
的脚本放在var theBlob=response.getBlob().setName(pdfName+'.PDF'行)之后;
。这样,PDF文件被创建到根文件夹。但我不确定这是否是您想要的结果。@Tanaike这似乎使它工作起来了,非常感谢,现在将PDF文件创建到根文件夹工作得很好!最好是直接下载PDF文件,我该怎么做?(打印应该像我按打印一样进行,它会下载文件)我刚刚发现,我需要在gid设置之前添加页边距设置,否则它将不起作用。以防任何人会对此进行搜索。感谢您的回复。当您想将文件下载到本地PC时,是否有线程对您的情况有用?目前无法从Sheets API访问打印设置,但您可以访问从文档中获取它们,这样也许可以帮助您按照您想要的方式设置。@Tanaike谢谢您的回答,我想也许可以不保存到Google Drive,而是直接下载,而不保存到Google Drive。Idk。看起来您链接的帖子都需要有一个准确的ID和一个l已将文件放入驱动器应用程序。非常感谢您的尝试!我会给您一个正确的答案,但遗憾的是无法回答,因为这是一个注释:D