Google лист создает PDF из другого ID листа - PullRequest
1 голос
/ 15 февраля 2020

Привет, как этот код можно изменить, чтобы создать файл PDF из другого рабочего листа вместо активного открытого рабочего листа. Вот часть кода, который я использую, и он работает, но я хотел бы создать PDF из другого листа ID

Спасибо

   var source = SpreadsheetApp.getActiveSpreadsheet();
   var spreadsheet = spreadsheetId ? SpreadsheetApp.openById(spreadsheetId) : SpreadsheetApp.getActiveSpreadsheet();
   var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId();
   var ticketnum = source.getSheetByName("Print Page").getRange('X1').getValue();
   var body = 'Attached is your copy'
   var Client = source.getSheetByName("Print Page").getRange('O5').getValue();
   var Cons = source.getSheetByName("Print Page").getRange('T4').getValue() ;
   var jobN = source.getSheetByName("Ticket PDF").getRange('G9').getValue() ;
   var mailTo = source.getSheetByName("Print Page").getRange('Z1').getValue() ;
   var folder = DriveApp.getFoldersByName('Ticket').next();
   var token = ScriptApp.getOAuthToken();
   var ssID = spreadsheetId;
   var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export"+
                                                    "?format=pdf&"+
                                                     '&portrait=true' + 
                                                     '&fzr=true' +  
                                                     '&fitw=True' + 
                                                     //'&scale=4' +
                                                     '&top_margin=0.25' + 
                                                     '&bottom_margin=0.25' + 
                                                     '&left_margin=0.25' +
                                                     '&right_margin=0.25' +
                                                     '&horizontal_alignment=CENTER' +  
                                                     '&gridlines=false'+
                                                     '&sheetnames=False';



     var response = UrlFetchApp.fetch(url, {
    headers: {
        'Authorization': 'Bearer ' + token
      }
    });

    var pdf = response.getBlob().setName( Client + "  " + ticketnum + " @ " + jobN + "  "  + '.PDF');
    folder.createFile(pdf)

1 Ответ

1 голос
/ 15 февраля 2020

Как насчет этой модификации?

В этой модификации предполагается, что another worksheet ID в вашем вопросе является другим листом в активной электронной таблице.

Модифицированный скрипт:

Для экспорта указанного листа c в электронную таблицу в виде файла PDF можно использовать параметр запроса gid следующим образом.

От:
"?format=pdf&"+
Кому:
"?format=pdf&gid=" + spreadsheet.getSheetByName("###").getSheetId() + "&" +
  • В этом случае установите имя листа, который вы хотите экспортировать в формате PDF, на ###.

Примечание:

  • Если вы хотите экспортировать несколько листов в Электронная таблица в виде файла PDF, эта тема может быть полезна.

Если я неправильно понял ваш вопрос, и это не то направление, которое вы хотите, я приношу свои извинения.

Добавлено

  • Вы хотите экспортировать указанную c электронную таблицу, которая не является активной электронной таблицей, в файл PDF.

В вашем сценарии укажите spreadsheetId. Если spreadsheetId не присвоена активная электронная таблица var spreadsheet = spreadsheetId ? SpreadsheetApp.openById(spreadsheetId) : SpreadsheetApp.getActiveSpreadsheet();. И spreadsheetId извлекается из активной таблицы. Поэтому, пожалуйста, измените следующим образом.

С:

var source = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = spreadsheetId ? SpreadsheetApp.openById(spreadsheetId) : SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId();

Кому:

var spreadsheetId = "###"; // Please set the Spreadsheet ID.

var source = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var spreadsheetId = spreadsheet.getId();
  • Если вы хотите экспортировать указанный c лист в Электронная таблица, пожалуйста, используйте параметр запроса gid. И если вы хотите экспортировать несколько листов в электронную таблицу, эта нить может оказаться полезной.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...