如何使用应用程序脚本居中我的 pdf 下载?

问题描述 投票:0回答:1

我使用了一位善良且乐于助人的评论者提供的脚本,如果我在表格中的格式相同,它就会起作用。但是,当我输入详细信息并且行大小发生变化时,页面会向左移动。有没有办法每次都将其对齐到中心?

这是我使用的脚本:

    function SavePage1() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Delivery Orders');
  const range = sheet.getRange("A1:D50");
  
  const url = 'https://docs.google.com/spreadsheets/d/' + sheet.getParent().getId() + 
    '/export?format=pdf&' +
    'size=a4&' + 
    'portrait=true&' + 
    'fitw=true&' +
    'scale=4&' +
    'gridlines=false&' + 
    'printtitle=false&' + 
    'sheetnames=false&' + 
    'pagenum=false&' + 
    'fzr=false&' + 
    'gid=' + sheet.getSheetId() + 
    '&range=' + range.getA1Notation() + 
    '&top_margin=0.197&' + 
    'right_margin=0.197&' + 
    'left_margin=0.197&' + 
    'bottom_margin=0.197&' + 
    'horizontal_alignment=center&' + 
    'vertical_alignment=top';
  
  const response = UrlFetchApp.fetch(url, {headers: {"Authorization": 'Bearer ' + ScriptApp.getOAuthToken()}});
  const blob = response.getBlob().setName("D0.pdf");
  
  const htmlOutput = HtmlService.createHtmlOutput(`
    <a href="data:application/pdf;base64,${Utilities.base64Encode(blob.getBytes())}" download="D0.pdf" id="downloadLink"></a>
    <script>document.getElementById('downloadLink').click(); google.script.host.close();</script>
  `);
  
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Download PDF");
}

Correct Format

Shifted to the left

我尝试手动更改脚本中的边距,但这不适用于所有页面,因为整个页面的大小可能会发生变化。我希望脚本自动将 pdf 居中对齐。

google-sheets google-apps-script pdf-generation google-sheets-api
1个回答
0
投票

当我看到你的脚本时,我注意到以下修改点。

  • horizontal_alignment=center
    vertical_alignment=top
    需要修改为
    horizontal_alignment=CENTER
    vertical_alignment=TOP
    。这是来自Andrew Roberts 的要点

因此,请按如下方式修改您的脚本并再次测试。

来自:

'horizontal_alignment=center&' + 
'vertical_alignment=top';

致:

'horizontal_alignment=CENTER&' +
'vertical_alignment=TOP';
© www.soinside.com 2019 - 2024. All rights reserved.