将特定范围的单元格导出为PDF – Google Sheets。

我使用谷歌电子表格来创建发票。我想通过一个脚本,我可以导出一个选定的范围(F1:M44)的PDF格式的文件名发票号码(单元格B2)+”发票”。我已经尝试了堆栈和youtube上的代码。他们都是用于导出表,而不是特定的范围。

解决方案:

解决办法

为了能够将规格范围导出为PDF,由于Apps Script中没有特定的工具,你需要执行变通方法。

下面的变通方法是 自动将我们要导出的范围复制到一个新的空白电子表格中,然后就可以只导出准确的范围。.

为什么我们需要一个新的电子表格?

好吧,为了导出一个范围,而不是碍于情面。所有空白单元格 我们将需要 隐藏所有不相关的行和列. 要实现这一点,最简单的方法是 在第一个单元格中粘贴我们想要的范围 (A1)的工作表。

此外,默认情况下,这将是 导出电子表格的所有工作表 所以我们只能将这个新范围的表安排在第一个单元格中,以避免其他数据进入其间。要 避免删除原稿,最好的方法是创建一个新的电子表格,处理完毕后将其删除。

下面是解决这个问题的脚本。它是自带注释的解释。

function myFunction() {
  // Get the range of cells you want to export 
  var rangeValues = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange('D10:F13').getValues();
  // Get the Drive folder you want to store your PDF to. Otherwise use root folder (if you dont mind about this)
  var folder = DriveApp.getFolderById('FOLDERID');
  
  // Create a blank spreadsheet to be able to export just the range
  var destSpreadsheet = SpreadsheetApp.create('PDF');
  
  // Check first if the sheet you are going to create exists. Otherwsie create it and copy paste the range
  // we want to export as PDF in the first values of the sheet. I.e if our range is 5 rows and 6 columns we want
  // it to be copied from A1 to F5 for example. Then we can hide the rest of columns and rows and export 
  // what we have left
  var sheet2 = destSpreadsheet.getSheetByName('sheet2');
  if(!sheet2){
    destSpreadsheet.insertSheet('sheet2').getRange('A1:C4').setValues(rangeValues);
    var sheet2 = destSpreadsheet.getSheetByName('sheet2');
  }
  
  // Hide all the rows and columns that do not have content 
  sheet2.hideRows(sheet2.getLastRow()+1, sheet2.getMaxRows()-sheet2.getLastRow());
  sheet2.hideColumns(sheet2.getLastColumn()+1, sheet2.getMaxColumns()-sheet2.getLastColumn());
  // Delete the first sheet that is automatically created when you create a new spreadsheet
  destSpreadsheet.deleteSheet(destSpreadsheet.getSheetByName('Sheet1'));
  
  // Export our new spreadsheet to PDF
  var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName('pdf');
  var newFile = folder.createFile(theBlob);
  
  //Delete the spreadsheet we created to export this range. 
  DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

防止Shiny selectInput在更新反应式绘图时过早地评估。

2022-9-8 20:21:40

未分类

在spark scala中查找数组列中的元素的最好方法是什么?

2022-9-8 20:21:42

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索