Apps Script

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

谁能帮我解决我的问题?需要导出一个特定的范围(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个回答
0
投票

答:你的答案是什么?

而不是使用 DriveApp,你可以通过使用 UrlFetchApp.

更多信息:

当你使用 DriveApp 来创建文件的blob,但它不具备读取文件细节的功能。在这种情况下,您不能指定您希望用以下方法导出的工作表的范围。DriveApp.

然而,您可以使用所有导出参数构建一个URL,并通过创建响应的blob并在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);
}

我希望这对你有帮助

参考文献。

如何在较少的列数中打印出长长的Google sheets列数?

© www.soinside.com 2019 - 2024. All rights reserved.