Google apps script 以pdf格式打印电子表格,不留页边距

Google apps script 以pdf格式打印电子表格,不留页边距,google-apps-script,Google Apps Script,我试图让我的团队更轻松,所以我想让他们将我的Google Sheets文档中的给定区域打印成具有预定义页边距/打印设置的pdf。打印区域不在活动电子表格上 我刚从Excel转到电子表格。我知道一些VBA,但对气体不太了解。我做了很多研究,但我发现的所有样本都基于UiApp,不再支持它 我发现了一些线索(我认为信息缺失的地方?) 我找到的最后一个是这一个(),我在其中添加了页边距的设置(但是它是这样工作的吗?我还不能尝试,因为我不知道如何下载pdf。我尝试过做研究,但找不到任何东西。)

我试图让我的团队更轻松,所以我想让他们将我的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