Конвертируйте все листы в pdf каждые 8 ​​часов или изменив значение ячейки с помощью скрипта Google Apps. - PullRequest
0 голосов
/ 13 мая 2018

Я только начал писать скрипт и пытаюсь преобразовать электронную таблицу Google (несколько листов) в файл PDF, изменив значение ячейки (например, A1, я пытаюсь, но ничего не получил) или каждые 8 ​​часов.Сценарий ниже работает, но он создает PDF только при запуске сценария.Я пытаюсь добавить триггер проекта: по времени каждые 8 ​​часов, но я получил электронное письмо: Неверное значение (строка 4, файл "Код"), поэтому в папке не было новых файлов PDF.

function savePDFs( optSSId, optSheetId ) {

// If a sheet ID was provided, open that sheet, otherwise assume script is
// sheet-bound, and open the active spreadsheet.
var ss = (optSSId) ? SpreadsheetApp.openById(optSSId) : 
SpreadsheetApp.getActiveSpreadsheet();

// Get folder containing spreadsheet, for later export
var parents = DriveApp.getFileById(ss.getId()).getParents();
if (parents.hasNext()) {
var folder = parents.next();
}
else {
folder = DriveApp.getRootFolder();
}

//additional parameters for exporting the sheet as a pdf
var url_ext = 'export?exportFormat=pdf&format=pdf'   //export as pdf

  // Print either the entire Spreadsheet or the specified sheet if 
optSheetId is provided
  + (optSheetId ? ('&gid=' + sheet.getSheetId()) : ('&id=' + ss.getId()))

  // following parameters are optional...
  + '&size=letter'      // paper size
  + '&portrait=true'    // orientation, false for landscape
  + '&fitw=true'        // fit to width, false for actual size
  + '&sheetnames=false&printtitle=false&pagenumbers=false'  //hide optional 
headers and footers
  + '&gridlines=false'  // hide gridlines
  + '&fzr=false';       // do not repeat row headers (frozen rows) on each 
page

var options = {
headers: {
  'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()
 }
}
var date = Utilities.formatDate8new Date(). "GMT+2" ""hh:mm dd/MM/yyyy")
var response = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/" + 
url_ext, options);
var blob = response.getBlob().setName(ss.getName() + date + '.pdf');

//from here you should be able to use and manipulate the blob to send and 
email or create a file per usual.
//In this example, I save the pdf to drive
folder.createFile(blob);

}

Когда я попытался запустить скрипт, автоматически меняя значение ячейки, я написал другой скрипт, о котором сообщалось ниже (не работает):

function onEdit(e) {
var langName = 'Sheet1'
var langCell = 'A1'

var curSheet = e.range.getSheet()

if (curSheet.getName() === langName) {
if (e.range.getA1Notation() === langCell) {
  savePDFs()      
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...