Google Sheets Script: PDF Drucken und in GDrive-Ordner Speichern
Hallo,
ich benötigte bitte Hilfe bei dem folgenden Teil meines Google Sheets-Scriptes.
Dieser Teil erstellt eine PDF-Datei und speichert diese unter einem bestimmten Namen (definiert unter der Variable "sheetName") in einem bestimmten GDrive-Ordner.
So weit funktioniert auch alles wunderbar.
Gerne würde ich jetzt aber noch folgende Änderungen in das Script aufnehmen, komme aber leider bei meiner Recherche nicht so recht weiter:
- Nur die aktuelle Seite Drucken und nicht das ganze Dokument;
- Formatierung:
- Keine Gitternetzlinien drucken;
- Ggf. nur die Spalten A - E drucken;
Vielen Dank im Voraus.
Grüße
Ray
ich benötigte bitte Hilfe bei dem folgenden Teil meines Google Sheets-Scriptes.
const Datum = new Date();
const AktuellerMonat = Datum.toLocaleDateString('de-DE', { month: 'long'});
let GDriveOrdner = DriveApp.getFileById('10OJI2k-ylxM25vv2Fj7qQs-SZaMPSJHV7uiYrWiAIMQ');
let blob = GDriveOrdner.getAs('application/pdf');
let pdf = DriveApp.getFolderById('1ZqxKpW1CeZbf4lzoP49hdXgIOneIbsi7')
.createFile(blob)
.setName(sheetName);
Dieser Teil erstellt eine PDF-Datei und speichert diese unter einem bestimmten Namen (definiert unter der Variable "sheetName") in einem bestimmten GDrive-Ordner.
So weit funktioniert auch alles wunderbar.
Gerne würde ich jetzt aber noch folgende Änderungen in das Script aufnehmen, komme aber leider bei meiner Recherche nicht so recht weiter:
- Nur die aktuelle Seite Drucken und nicht das ganze Dokument;
- Formatierung:
- Keine Gitternetzlinien drucken;
- Ggf. nur die Spalten A - E drucken;
Vielen Dank im Voraus.
Grüße
Ray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81633035342
Url: https://administrator.de/contentid/81633035342
Ausgedruckt am: 23.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar
Guckst du hier da findest du eine Funktion die das alles macht, über Parameter alles anpassbar
https://developers.google.com/apps-script/samples/automations/generate-p ...
Gruß Katrin
https://developers.google.com/apps-script/samples/automations/generate-p ...
/**
* Creates a PDF for the customer given sheet.
* @param {string} ssId - Id of the Google Spreadsheet
* @param {object} sheet - Sheet to be converted as PDF
* @param {string} pdfName - File name of the PDF being created
* @return {file object} PDF file as a blob
*/
function createPDF(ssId, sheet, pdfName) {
const fr = 0, fc = 0, lc = 5;
let lr = sheet.getLastRow();
const url = "https://docs.google.com/spreadsheets/d/" + ssId + "/export" +
"?format=pdf&" +
"size=7&" +
"fzr=true&" +
"portrait=true&" +
"fitw=true&" +
"gridlines=false&" +
"printtitle=false&" +
"top_margin=0.5&" +
"bottom_margin=0.25&" +
"left_margin=0.5&" +
"right_margin=0.5&" +
"sheetnames=false&" +
"pagenum=UNDEFINED&" +
"attachment=true&" +
"gid=" + sheet.getSheetId() + '&' +
"r1=" + fr + "&c1=" + fc + "&r2=" + lr + "&c2=" + lc;
const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName + '.pdf');
// Gets the folder in Drive where the PDFs are stored.
const folder = getFolderByName_(OUTPUT_FOLDER_NAME);
const pdfFile = folder.createFile(blob);
return pdfFile;
}
Servus Ray,
die oben gepostete Funktion noch um ein paar Parameter erweitert, dann wird sie etwas komfortabler nutzbar:
Grüße Uwe
die oben gepostete Funktion noch um ein paar Parameter erweitert, dann wird sie etwas komfortabler nutzbar:
function ExportCurrentSheetAsPDF() {
// get workbook
let wb = SpreadsheetApp.getActiveSpreadsheet();
// get current sheet
let ws = wb.getActiveSheet();
// create pdf from current sheets Range "A1:E<lastRow>"
let pdfFile = createPDF(wb,ws,"Rechnung.pdf","DerZielOrdnerDesPDFs",0,0,ws.getLastRow(),5);
}
// create pdf function
function createPDF(workbook, sheet, pdfName, outputFolder, fRow, fColumn, lRow, lColumn) {
// define export uri
const url = "https://docs.google.com/spreadsheets/d/" + workbook.getId() + "/export" +
"?format=pdf&" +
"size=a4&" +
"fzr=true&" +
"portrait=true&" +
"fitw=true&" +
"gridlines=false&" +
"printtitle=false&" +
"top_margin=0.5&" +
"bottom_margin=0.25&" +
"left_margin=0.5&" +
"right_margin=0.5&" +
"sheetnames=false&" +
"pagenum=UNDEFINED&" +
"attachment=true&" +
"gid=" + sheet.getSheetId() + '&' +
"r1=" + fRow + "&c1=" + fColumn + "&r2=" + lRow + "&c2=" + lColumn;
// get oauth token
const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
// execute action and create pdf bytes
const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName);
// Gets the folder in Google Drive where the PDF will be stored.
const foundFolders = DriveApp.getFoldersByName(outputFolder);
// if folder was not found, throw exception
if (!foundFolders.hasNext()){
throw("Could not find the folder named '" + outputFolder +"'!");
}
// get first found folder
const folder = foundFolders.next();
// return file
return folder.createFile(blob);
}
Test
Ausgangstabelle:
Ergebnis wie gewünscht mit Ausgabe von A:E:
Grüße Uwe