G.A.S 代码限制从 google sheet 生成的 pdf 仅包含有数据的行

G.A.S code to limit a pdf generated from a google sheet only to the rows that have data

我使用以下 Google 脚本代码生成 google sheet 的 pdf 并通过电子邮件发送。代码工作正常,除了生成的 pdf 包含太多空白页。如何将生成的 pdf 限制为仅包含数据的 sheet 行?

function emailReport() {
  readyForExport();
  var spreadsheet = SpreadsheetApp.getActive();
  var subject = spreadsheet.getRange("U1:U1").getValues();
  var emailTo = spreadsheet.getRange("V1:V1").getValues();
  var message = spreadsheet.getRange("W1:W1").getValues();
  var fileName = spreadsheet.getRange("X1:X1").getValues();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName("Students"));
  var pdf = DriveApp.getFileById(spreadsheet.getId()).getAs('application/pdf').getBytes();
  var attach = {fileName:fileName[0][0],content:pdf, mimeType:'application/pdf'};
  MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
};

提前致谢。

我终于设法编写了一个代码,它可以通过首先从 sheet 中删除空行来成功删除我的 pdf 附件的空页。 :)

我特意编写代码,在末尾只留下一个空行,让用户清楚地知道后续行中不存在其他数据。

我不得不解决一些错误,因为代码 运行 根据页面上已经存在的空行数而出现错误。最后,我设法处理了所有的错误,并提出了一个运行流畅并考虑了所有异常情况的代码。 :)))

代码如下:

  var firstDelRow = spreadsheet.getSheetByName('Students').getLastRow()+2;
  var lastDelRow = spreadsheet.getSheetByName('Students').getMaxRows();
  var rowDif = lastDelRow-firstDelRow+1;

  if (rowDif == -1) {
  spreadsheet.getSheetByName('Students').insertRowAfter(firstDelRow-2);
  };

  if (rowDif >= 1) {

  spreadsheet.getSheetByName('Students').deleteRows(firstDelRow, rowDif);
  };