Есть ли способ включить текущую дату / время при экспорте листа в формате PDF через Google Apps Script? - PullRequest
0 голосов
/ 15 апреля 2019

Я написал функцию в GAS, которая при передаче ему листа сохраняет этот лист в формате PDF на Google Диске с определенными параметрами (размером букв, портретом, отображением имен и заголовков листов, определенными полями и т. Д.).Я сделал это, следуя указаниям Амит Агарвал здесь .Единственное, что я не могу сделать, это отобразить текущую дату / время в левом нижнем углу PDF.Это можно сделать с помощью графического интерфейса настроек печати Google Sheets (верхние и нижние колонтитулы -> текущая дата и текущее время).Как мне это сделать с помощью Google Apps Script?

Я попытался добавить в URL следующее:

+ '&date=true'
+ '&datetime=true'
+ '&currentdate=true'
+ '&currentdatetime=true'

Безрезультатно.

Вот полная функция:

/*
* Export the sheet as a PDF
* @param {string} oldSSName The name of the spreadsheet, temporarily changed for report
* @param {string} term The name of the printable report sheet
*/

function printPDF(term, oldSSName){

  //Get sheet info
  var sourceSheet = SpreadsheetApp.getActiveSpreadsheet();
  var outputSheet = sourceSheet.getSheetByName(term) || sourceSheet.getActiveSheet();
  var oldSSName = oldSSName || sourceSheet.getName();
  var term = term || sourceSheet.getActiveSheet().getName();
  var parentFolder;
  var currentDate = new Date();

  //Checks if folder exists, if it doesn't, create it
  try {
    //Folder exists
    parentFolder = DriveApp.getFoldersByName('name').next();   
    Logger.log('folder exists');
  }
  catch(e) {
    //Folder doesn't exist, create folder
    parentFolder = DriveApp.createFolder('name');
    Logger.log('folder does not exist, creating folder');
  }

  //Name PDF
  var PDFName = sourceSheet.getName() + "-" + term + "-" + currentDate;
  SpreadsheetApp.getActiveSpreadsheet().toast('Creating PDF '+ PDFName);

  //Export PDF URL
  var PDFurl = 'https://docs.google.com/spreadsheets/d/' + sourceSheet.getId() + '/export?exportFormat=pdf&format=pdf' // export as pdf
  + '&size=letter'                           // paper size legal / letter / A4
  + '&currentdate=true'                           // date, does not work
  + '&portrait=true'                     // orientation, false for landscape
  + '&fitw=true'                        // fit to page width, false for actual size
  + '&sheetnames=true&printtitle=true' // hide optional headers and footers
  + '&pagenum=CENTER&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&top_margin=.75&bottom_margin=.75&left_margin=.25&right_margin=.25' //Narrow margins
  + '&gid=' + outputSheet.getSheetId();    // the sheet's Id

  Logger.log(PDFurl);

  //Authorize script
  var token = ScriptApp.getOAuthToken();

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

  //Name PDF blob
  var PDFBlob = response.getBlob().setName(PDFName+'.pdf');

  //Delete PDF if it already exists
  var files = parentFolder.getFilesByName(PDFName);
  while (files.hasNext())
  {
    files.next().setTrashed(true);
  }

  //Create PDF file from blob
  var createPDFFile = parentFolder.createFile(PDFBlob);  
  var folderURL = parentFolder.getUrl();

  //Display link to folder
  var htmlApp = HtmlService
  .createHtmlOutput('<!DOCTYPE html> <html> <body> <div>Your report has been saved to your Google Drive ' +
                    '<a href="' + folderURL + '" target="_top" rel="noopener noreferrer">here</a>. ' +
                    '<a href="' + createPDFFile.getUrl() + '" target="_top" rel="noopener noreferrer">(direct link)</a> </div>' +
    '</body></html>')
    .setTitle("Success")
    .setHeight(75);

  SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);

  //Temporary for reports, put original spreadsheet name back  
  sourceSheet.rename(oldSSName);

}

Я ожидаю, что в PDF будет отображаться дата в левом нижнем углу (пример при печати из настроек ), но левый нижний угол пуст в реальном сохраненном PDF,Какие-либо предложения?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...