[email protected] ich eine Weile damit zu kämpfen habe, rufe ich die Menge um Hilfe.
Ich versuche, 2 Google Text & Tabellen als PDFs an eine E-Mail anzuhängen. Ich sehe viele Beispiele in Bezug auf Google Sheets und konnte Kopien von Blättern erfolgreich als PDF per E-Mail versenden, aber ich konnte dies nicht auf Docs übertragen.
In mehreren verschiedenen Szenarien sind die PDF-Anhänge entweder eine Kopie meiner ursprünglichen Vorlage Doc oder eine Bilderfassung der Anmeldeseite "Ein Konto. Alle von Google" . Wenn ich mir die generierten Links (Logger.log) ansehe und sie verwende, wird eine Kopie des richtigen Dokuments heruntergeladen.
Unten finden Sie ein Beispiel für mein Szenario, in dem ich versuche, die E-Mail-Anhänge zu erstellen. Siehe Funktion emailDocAsPDF () unten
Vielen Dank im Voraus für jede Anleitung zu diesem Thema.
function myFunctionUpdated() {
var testTemplateId = searchDriveFile('Test Template');
Logger.log('test template id = ' + testTemplateId);
var fileName = 'Copy of Test Template'
Logger.log(fileName);
DriveApp.getFileById(testTemplateId).makeCopy(fileName);
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = ss.getRange(1, 1, 3, 2).getValues();
var copyNewTemplateId = searchDriveFile(fileName);
var copyTemplate = DocumentApp.openById(copyNewTemplateId);
var copyTemplateBody = copyTemplate.getBody().editAsText();
for (i=0; i<range.length; i++) {
copyTemplateBody.replaceText(range[i][0], range[i][1]);
}
copyTemplate.saveAndClose();
emailDocAsPDF(fileName)
}
// Searched Google Drive for a file name and returns the file ID.
function searchDriveFile(fileName) {
var files = DriveApp.searchFiles(
'title = "'+ fileName +'"');
while (files.hasNext()) {
var file = files.next();
var id = file.getId();
return id;
}
}
// Send document in an email as PDF
function emailDocAsPDF(fileName) {
var staticDoc = 'FILE-ID';
var attachmentDoc = UrlFetchApp.fetch("https://docs.google.com/document/d/" + copyTemplateId + "/export?format=pdf");
Logger.log("https://docs.google.com/document/d/" + copyTemplateId + "/export?format=pdf");
var attachmentStaticDoc = UrlFetchApp.fetch("https://docs.google.com/document/d/" + staticDoc + "/export?format=pdf");
Logger.log("https://docs.google.com/document/d/" + staticDoc + "/export?format=pdf");
var fileBlob = [];
fileBlob[0] = attachmentDoc.getBlob().getAs('application/pdf');
fileBlob[1] = attachmentStaticDoc.getBlob().getAs('application/pdf');
var body = "Bird is the WORD!! <br>" +
"<a href='http://www.example.com'>Visit Example</a>";
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail("[email protected]", "Test Documents Email", body, {
htmlBody: body,
attachments:[fileBlob[0],fileBlob[1]]
});
}
BEARBEITEN - Erfolgreiche Updates mit Code von Sandwich.
// Send document in an email as PDF
function emailDocAsPDF(fileName) {
var staticDoc = 'FILE-ID';
var copyTemplateId = searchDriveFile(fileName);
var blobs = [];
var doc = DriveApp.getFileById(copyTemplateId);
blobs[0] = doc.getBlob().getAs('application/pdf').setName('MyAttachment1.pdf');
var doc = DriveApp.getFileById(staticDoc);
blobs[1] = doc.getBlob().getAs('application/pdf').setName('MyAttachment2.pdf');
var zipBlob = Utilities.zip(blobs).setName('Documents.zip');
var recipient = '[email protected]';
var subject = 'Test Email';
var body = 'Bird is the WORD';
MailApp.sendEmail(recipient, subject, body, {attachments: [zipBlob]});
}
Um ein Dokument als PDF anzuhängen, rufen Sie getBlob
die Datei auf, geben Sie den Inhaltstyp wie mit an .getAs('application/pdf')
und legen Sie optional einen Namen mit fest setName
. Das ist alles:
var doc = DriveApp.getFileById('ID_HERE');
var blob = doc.getBlob().getAs('application/pdf').setName('MyAttachment.pdf');
var recipient = '[email protected]';
var subject = 'Email subject';
var body = 'Text here';
MailApp.sendEmail(recipient, subject, body, {attachments: [blob]});
Sie haben versucht, "Als PDF über URL-Abfrage exportieren" zu verwenden. Dies ist eine schlecht dokumentierte Funktion, die manchmal für Blätter nützlich ist (Festlegen der Grenzen des exportierten Bereichs), für Dokumente jedoch nicht erforderlich ist, wenn sie überhaupt für sie vorhanden ist. Die oben beschriebene Methode sollte für alle in Google Drive gespeicherten Inhalte funktionieren.
Übrigens ist es vorzuziehen, MailApp
anstelle des GmailApp
Versendens von E-Mails zu verwenden, da die Berechtigungsstufe auf das beschränkt bleibt, was Sie benötigen: das Versenden von E-Mails. Mit GmailApp
erhält das Skript auch die Berechtigung, auf alle vorhandenen E-Mails zuzugreifen und diese zu löschen. Dies ist für Skripte, die durch Ausprobieren und Kopieren von Code aus dem Internet erstellt wurden, nicht ratsam.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen