使用 Apps 脚本在 Gmail 中嵌入 Google 表单

Embed Google Form in Gmail using Apps Script

我正在尝试使用 Apps 脚本在电子邮件中嵌入预填表单。电子邮件只会发送给 Gmail 用户。我想要一些与手动通过电子邮件发送表单时按 'include form in email' 选项相同的功能。

我已成功创建 prefilledUrl 并使用 UrlFetchAppHtmlService 从表单中获取 Html 并发送电子邮件。

但是当它到达时看起来像下面的屏幕截图并且用户无法提交。

我使用的代码的精简版本如下:

var prefilledForm = 'prefilledForm link here');
Logger.log(prefilledForm);

var subject = 'Message from Office';
var response = UrlFetchApp.fetch(prefilledForm);
var htmlBody = HtmlService.createHtmlOutput(response).getContent();

var body = 'Dear '+mName+',\n\n'+mMessage+'\nPlease acknowledge by submitting the form below.\nRegards,\nSchool Office';

GmailApp.sendEmail(eEmail,subject,body,{
  noReply:true,
  htmlBody: htmlBody
});

有没有办法像下面的屏幕截图那样 select 'include form in email' 将表单嵌入电子邮件?

  1. 使用电子邮件中包含的表格将表格发送给自己。
  2. 在浏览器中打开 Gmail,按 F12。在电子邮件正文中找到表单的 div。
  3. 将 div 代码粘贴到 Apps 脚本 HTML 文件的正文中。或者将它粘贴到脚本中的电子邮件 HTML 正文,我没有测试它。
  4. 发送包含上述HTML文件的邮件,您应该可以得到类似如下的结果。

我找到了解决方法,无需手动操作即可完成此操作。在 Ashton Fei 的回复中的第 3 点之后,使用 getCode() 和 replace():

将 Title、description 和 link url 的所有实例替换为所需的值
  var formUrl = form.getPublishedUrl()
  var template = HtmlService.createTemplateFromFile("form.html").getCode(); // HTML code to string
  template = template.replaceAll("FORM__URL", formUrl).replace("TITLE", title).replace("Descpition_text", desctiptionText); //Swapping bits that need change
  var htmlBody = eval(template).getContent() //"Go back to HTML"

现在您可以在向 htmlBody

发送电子邮件时使用此 HTML

这似乎对我有用:

  1. 通过电子邮件将嵌入的表格发送给您自己
  2. 点击“转发”并根据需要修改电子邮件(您可以删除和添加徽标等内容)
  3. 点击“另存为模板”并为其命名(将电子邮件设为“全屏”并点击右下角的三个点)

当您想将其发送给客户时,单击“撰写”(全屏),最大化电子邮件 window,单击三个点(如上所述)并选择您创建的模板。