[email protected] Nachdem ich eine Weile damit zu kämpfen habe, rufe ich um Hilfe von der Menge.E-Mail Google Doc als PDF-Anhang
Ich versuche, 2 Google Docs als PDF an eine E-Mail anzuhängen. Ich sehe viele Beispiele in Bezug auf Google Tabellen und war erfolgreich in der Lage, Kopien von Tabellen als PDF per E-Mail zu versenden, aber ich konnte dies nicht an Google Docs übertragen.
In mehreren verschiedenen Szenarien sind die PDF-Anhänge entweder eine Kopie meiner original template Doc oder eine Bilderfassung von "One Account. All of Google" sign in page. Wenn ich die erzeugten Links (Logger.log) anschaue und sie verwende, wird eine Kopie von the correct Doc heruntergeladen.
Unten ist ein Beispiel für mein Szenario, in dem ich versuche, die E-Mail-Anhänge zu erstellen. Siehe Funktion emailDocAsPDF() nach unten
Vielen Dank im Voraus für eine 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]]
});
}
EDIT - Erfolgreiche Updates mit Code von Sandwich zur Verfügung gestellt.
// 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]});
}
Auch habe ich vergessen zu erwähnen, dass 'copyTemplate.saveAndClose();' wurde benötigt, nachdem Aktualisierungen für das Vorlagen-Dokument vorgenommen wurden. Dadurch konnte ich das aktualisierte Dokument per E-Mail versenden. – onerockscott