通过Google表格生成并发送pdf到我的电子邮件地址 - 不发送,调试到没有任何帮助

时间:2016-03-02 12:27:29

标签: forms email debugging pdf google-apps-script

我正在尝试将自己的基于表单的报告作为pdf发送给自己。问题是,我没有收到任何电子邮件。调试没有多大帮助,因为这只能告诉我哪些值是“未定义的”(它们被定义为即时填写表单并通过单击发送触发电子邮件;理论上)。我的编码经验源于TurboPascal和.bat文件的日子,我最近意识到我需要塑造。试图找出Android,这是一个小小的实验。但是我忘记了“现在怎么样?”的失落感觉......

以下是代码:

// Samfunnsutvikling kursrapport

var docTemplate = "TemplateIDinGoogleDoks";
var docName = "Kursrapport";

// When Form Gets submitted
function onFormSubmit(e) {
//Get information from form and set as variables
var email = "worker@work.no";
var namn = e.namedvalues.namn;
var arrangement = e.namedvalues.arrangement;
var dato = e.namedvalues.dato;
var referat = e.namedvalues.referat;

// Get document template, copy it as a new temp doc, and save the Doc’s id
var copyId = DocsList.getFileById(docTemplate)
.makeCopy(docName+' for '+namn)
.getId();
// Open the temporary document
var copyDoc = DocumentApp.openById(copyId);
// Get the document’s body section
var copyBody = copyDoc.getActiveSection();

// Replace place holder keys,in our google doc template
copyBody.replaceText('keynamn', namn);
copyBody.replaceText('keyarrangement', arrangement);
copyBody.replaceText('keydato', dato);
copyBody.replaceText('keyreferat', referat);

// Save and close the temporary document
copyDoc.saveAndClose();

// Convert temporary document to PDF
var pdf = DocsList.getFileById(copyId).getAs("application/pdf");

// Attach PDF and send the email
var subject = "Kursrapport";
var body = "Kursrapporten frå " + namn + "";
GmailApp.sendEmail(email, subject, body, {htmlBody: body, attachments: pdf});

// Delete temp file
DocsList.getFileById(copyId).setTrashed(true);
}

脚本/文档有权发送电子邮件,但奇怪的是,我必须两次授权。它被保存了。

1 个答案:

答案 0 :(得分:0)

通常,您可以添加 Logger.log() 来打印变量值,或只添加消息以查看其达到的距离。

看起来附件参数需要 Blob [] type,但是您只传递 Blob 。所以,它应该是:

GmailApp.sendEmail(email, subject, body, {htmlBody: body, attachments: [pdf]});

您可能还希望将 DocsList 替换为 DriveApp 类,因为第一个已被删除。

<强>更新

事实证明 getActiveSection() was renamed getBody()