Отправьте только первый лист - PullRequest
0 голосов
/ 05 марта 2019

У меня есть следующее, полученное с форума, которое действительно работает, но я хочу только первый лист, созданный в формате PDF и отправленный по электронной почте, в настоящее время весь файл отправляется в формате .pdf.

Я перепробовал несколько вариантов, но, как я уверен, вы видите, я не кодер.Любая помощь могла бы быть полезна.

function sendSheetToPdfwithA1MailAdress() { // this is the function to call

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sh = ss.getSheets()[0]; // it will send sheet 0 which is the first sheet in the spreadsheet.

  // if you change the number, change it also in the parameters below

  var shName = sh.getName()

  sendSpreadsheetToPdf(0, shName, sh.getRange('C12').getValue(), "Shoalhaven     Hotwater & Elements", "Hi, Please see attached Purchase Order - Shoalhaven     Hotwater & Elements");

}

function sendSpreadsheetToPdf(sheetNumber, pdfName, email, subject, htmlbody) {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  var spreadsheetId = spreadsheet.getId()

  var sheetId = sheetNumber ? spreadsheet.getSheets()["Purchase Order     Form"].getSheetId() : null;

  var url_base = spreadsheet.getUrl().replace(/edit$/, '');


  var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf

    +
    (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Попробуйте это:

Вам просто нужно создать папку для ваших PDF-файлов и ввести идентификатор этой папки в код.Эта функция удаляет старые файлы PDF перед созданием каждого из них.Он также скрывает все листы, кроме первого.И после создания и сохранения файла он снова показывает листы.

function savePDF() {
  var ss=SpreadsheetApp.getActive(); 
  var allshts=ss.getSheets();
  for(var i=1;i<allshts.length;i++) {//hide unwanted sheets
    allshts[i].hideSheet();
  }
  var ssBlob=ss.getBlob().getAs('application/pdf').setName('MyPDF');
  var pdfFolder=DriveApp.getFolderById('pdfFolderId');//pdfFolderId
  var files=pdfFolder.getFilesByName('MyPDF');
  while(files.hasNext()){
    files.next().isTrashed(true);//trash oldfiles
  }
  var pdfFile=pdfFolder.createFile(ssBlob);    
  for(var i=1;i<allshts.length;i++) {//show unwanted sheets
    allshts[i].showColumns(i);
  }
  return pdfFile;
}
0 голосов
/ 05 марта 2019

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

function toPDF(folderlocation) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 

  ss.getSheets()[0].hideSheet();
  ss.getSheets()[1].hideSheet();
  ss.getSheets()[2].hideSheet();    
  var blob = DriveApp.getFileById(ss.getId()).getAs("application/pdf");
  var prettyTime= Utilities.formatDate(new Date(),'America/Los_Angeles', "YYYY-MM-dd" );  
  folder = DriveApp.getFolderById(folderlocation);
  var theBlob = ss.getBlob().getAs('application/pdf').setName('SOME TITLE  '+prettyTime);
  var newFile = folder.createFile(theBlob);    
  ss.getSheets()[0].showSheet();
  ss.getSheets()[1].showSheet();
  ss.getSheets()[2].showSheet();
  return newFile;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...