Я только начал писать скрипт и пытаюсь преобразовать электронную таблицу 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()
}
}