【问题标题】:Generate and send pdf through Google Forms to my email address - doesn't send, debugging to no assitance通过 Google 表单生成并发送 pdf 到我的电子邮件地址 - 不发送,调试无帮助
【发布时间】:2016-03-02 12:27:28
【问题描述】:

我正在尝试以 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);
}

脚本/文档被授权发送电子邮件,但奇怪的是,我不得不授权两次。已保存。

【问题讨论】:

  • 啊,涡轮帕斯卡。美好的时光。你引用那句话得分很高:-)
  • 哈哈,谢谢!很久以前,当我试图记住一个足够的命令来回复时,我才意识到这有多长……结果两手空空。

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


【解决方案1】:

一般情况下,您可以添加 Logger.log() 来打印变量值或仅显示消息以查看其影响范围。

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

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

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

更新

原来 getActiveSection() was renamedgetBody()

【讨论】:

  • 感谢您的提示!我添加了额外的括号,随后从 DocsList 转到 DriveApp,但我仍然没有收到我期望的邮件。调试仍然会产生相同的“未定义”值。
  • @Sjalabais 你检查过它可以不带附件发送吗?
  • 'code' GmailApp.sendEmail(email, subject, body, {htmlBody: body}); '代码'
  • 我想我会放过这个谎言并创建一个 .docx 供人们自己填写...:o
  • @Sjalabais 好的,但是你查看我关于 getBody 的更新了吗?
猜你喜欢
  • 2011-04-24
  • 2011-03-21
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多