【问题标题】:Get specific Range to Export获取要导出的特定范围
【发布时间】:2020-04-22 13:47:18
【问题描述】:

谁能帮我解决我的问题? 需要导出特定范围 (A1:J39),而不是整个工作表。

function SavePDFtoDrive() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ltrsht = ss.getSheetByName("Schichtübergabe-Protokoll");
  var datasheet = ss.getSheetByName("Daten");
  var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for(var i =0;i<sheets.length;i++){
    if(sheets[i].getName()!="Schichtübergabe-Protokoll"){ sheets[i].hideSheet() }
    }
    var pdf = DriveApp.getFileById(ss.getId());
    var theBlob = pdf.getBlob().getAs('application/pdf').setName(datasheet.getRange("I8").getValue()+".pdf");
    var folderID = "1dyKFNvQWrSiNFA8N5PyUMPJQpWSVhsLf"; // Folder id to save in a folder
    var folder = DriveApp.getFolderById(folderID);
    var newFile = folder.createFile(theBlob);
}

【问题讨论】:

  • 我需要导出选项/设置...横向和完美的适合宽度

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


【解决方案1】:

答案:

您可以使用UrlFetchApp 从导出 URL 获取您的 Blob,而不是使用 DriveApp 获取您的 Blob。

更多信息:

当您使用DriveApp 创建文件的 blob 时,它没有读取文件细节的功能。在这种情况下,您无法使用 DriveApp 指定要导出的工作表的范围。

但是,您可以使用所有导出参数构建一个 URL,并通过创建响应的 blob 并在 Drive 中创建它来在 Drive 中创建导出。

代码:

function SavePDFtoDrive() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ltrsht = ss.getSheetByName("Schichtübergabe-Protokoll");
  var datasheet = ss.getSheetByName("Daten");
  
  // build your URL:  
  var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?"
  //define your parameters:
  var params = 'exportFormat=pdf&format=pdf'
  + '&portrait=false'
  + '&fitw=true'
  + '&gid=' + ltrsht.getSheetId()
  + '&range=A1:J39';
   
  //get token for UrlFetch:
  var token = ScriptApp.getOAuthToken(); 
  
  var response = UrlFetchApp.fetch(url + params, { 
    'headers': {
      'Authorization': 'Bearer ' + token
    }
  });  
  
  var fileName = datasheet.getRange("I8").getValue() + ".pdf";
  var theBlob = response.getBlob().setName(fileName);
  var folderID = "1Hp-P1dzWaKHhhS2FTPzKib6pwJibS12t";
  var folder = DriveApp.getFolderById(folderID);
  
  folder.createFile(theBlob);
}

参考资料:


相关问题/答案:

【讨论】:

  • 我需要更多选项/设置.... 边缘变窄。你能告诉我它的代码吗?
  • 很高兴为您提供帮助!如果可以的话,出于文档目的,请接受对您有帮助的答案 (✓) - 它可以帮助将来遇到相同问题的其他人也找到解决方案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多