【问题标题】:Export Google Sheets to PDF without cell gridlines将 Google 表格导出为没有单元格网格线的 PDF
【发布时间】:2018-08-16 08:01:04
【问题描述】:

我正在尝试通过 Apps 脚本从 Google 表格导出 PDF。我在网上找到了有用的代码,效果很好,只是我找不到没有网格的方法来导出它,或者更改边距和页面大小。

function generatePdf() {
  var originalSpreadsheet = SpreadsheetApp.getActive();
  var sourcesheet = originalSpreadsheet.getSheetByName("TestSheet");
  var sourcerange = sourcesheet.getRange('B1:K55');  // range to get - here I get all of columns which i want
  var sourcevalues = sourcerange.getValues();
  var data = sourcesheet.getDataRange().getValues();

  var number =  originalSpreadsheet.getRange('G9:H9').getValue();

  var newSpreadsheet = SpreadsheetApp.create("Invoice pdf"); // can give any name.
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var projectname = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = sourcesheet.copyTo(newSpreadsheet);
  var destrange = sheet.getRange('B1:K55');
  destrange.setValues(sourcevalues);
  newSpreadsheet.getSheetByName('Sheet1').activate();
  newSpreadsheet.deleteActiveSheet();

  var invoiceName = "Invoice "+number;
  var pdf = DriveApp.getFileById(newSpreadsheet.getId());
  var theBlob =     pdf.getBlob().getAs('application/pdf').setName(invoiceName);

  var folderID = "1Y7n1e_tzQWvzVykHJf_DSm9lBVmokDHA"; // Folder id to save in a folder.
  var folder = DriveApp.getFolderById(folderID);
  var newFile = folder.createFile(theBlob);

  DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true);  
}

我一直在到处寻找答案,但我无法将找到的一些解决方案应用于我的代码。

【问题讨论】:

  • 我找不到在我的代码中实现这些解决方案的方法 =\
  • 给您带来的不便,我深表歉意。从您的回复中,我无法理解您当前的问题。你能提供它的详细信息吗?如果可以,您能否通过包含最新脚本来更新您的问题?
  • 上面的脚本是最新的,我需要找到一种方法来设置 pdf 在没有网格和没有边距的情况下打印。谢谢
  • 感谢您的回复。我认为您可以通过使用查询参数导出电子表格来获得它。查询参数及导出方法见以上2个参考。

标签: google-apps-script google-sheets export-to-pdf


【解决方案1】:

我不确定如何使用代码进行操作,但如果您想不使用代码进行操作...从 Google 表格下载时,您可以选择删除单元格网格线。以下是路线:

  1. 文件 > 下载 > PDF 文档 (.pdf)

  2. 这将打开一个预览屏幕。右侧边栏有一个名为“格式化”的下拉菜单。

  3. 在“格式”下,取消选中标有“显示网格线”的框。

就是这样!

【讨论】:

    【解决方案2】:

    无法将选项传递给getAs函数,但您可以自己导出文件并下载URL:

    function getPdf(spreadsheet) {
      var options = {
        format:       'pdf',
        exportFormat: 'pdf',
        size:         7, // A4
        portrait:     true,
        gridlines:    false,
      };
    
      // construct export URL
      var query = Object.keys(options).map(function (key) {
        return encodeURIComponent(key) + '=' + encodeURIComponent(options[key]);
      }).join('&');
      var exportUrl = spreadsheet.getUrl().replace(/\/edit.*$/, '/export?' + query);
    
      var response = UrlFetchApp.fetch(url, {
        headers: {
          Authorization: 'Bearer ' +  ScriptApp.getOAuthToken(),
        },
      });
    
      return {
        fileName: spreadsheet.getName() + '.pdf',
        content:  response.getBlob().getBytes(),
        mimeType: MimeType.PDF,
      };
    }
    

    完整的导出选项列表可以在https://stackoverflow.com/a/46312255找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-05
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多