Получить спецификацию c Диапазон для экспорта - PullRequest
0 голосов
/ 22 апреля 2020

Может кто-нибудь помочь мне с моей проблемой? Необходимо экспортировать указанный диапазон c (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);
}

1 Ответ

0 голосов
/ 22 апреля 2020

Ответ:

Вместо того, чтобы получать свой BLOB-объект с помощью DriveApp, вы можете получить свой BLOB-объект из URL-адреса экспорта, используя UrlFetchApp.

Дополнительная информация:

Когда вы используете DriveApp для создания большого двоичного файла, он не имеет функции для чтения особенностей файла. В этом случае вы не можете указать диапазон листа, который вы будете экспортировать с помощью 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);
}

Надеюсь, это вам пригодится!

Ссылки:

Связанные вопросы / ответы:

...