使用 Apps 脚本在 Gmail 中嵌入 Google 表单
Embed Google Form in Gmail using Apps Script
我正在尝试使用 Apps 脚本在电子邮件中嵌入预填表单。电子邮件只会发送给 Gmail 用户。我想要一些与手动通过电子邮件发送表单时按 'include form in email' 选项相同的功能。
我已成功创建 prefilledUrl
并使用 UrlFetchApp
和 HtmlService
从表单中获取 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' 将表单嵌入电子邮件?
- 使用电子邮件中包含的表格将表格发送给自己。
- 在浏览器中打开 Gmail,按 F12。在电子邮件正文中找到表单的 div。
- 将 div 代码粘贴到 Apps 脚本 HTML 文件的正文中。或者将它粘贴到脚本中的电子邮件 HTML 正文,我没有测试它。
- 发送包含上述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
这似乎对我有用:
- 通过电子邮件将嵌入的表格发送给您自己
- 点击“转发”并根据需要修改电子邮件(您可以删除和添加徽标等内容)
- 点击“另存为模板”并为其命名(将电子邮件设为“全屏”并点击右下角的三个点)
当您想将其发送给客户时,单击“撰写”(全屏),最大化电子邮件 window,单击三个点(如上所述)并选择您创建的模板。
我正在尝试使用 Apps 脚本在电子邮件中嵌入预填表单。电子邮件只会发送给 Gmail 用户。我想要一些与手动通过电子邮件发送表单时按 'include form in email' 选项相同的功能。
我已成功创建 prefilledUrl
并使用 UrlFetchApp
和 HtmlService
从表单中获取 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' 将表单嵌入电子邮件?
- 使用电子邮件中包含的表格将表格发送给自己。
- 在浏览器中打开 Gmail,按 F12。在电子邮件正文中找到表单的 div。
- 将 div 代码粘贴到 Apps 脚本 HTML 文件的正文中。或者将它粘贴到脚本中的电子邮件 HTML 正文,我没有测试它。
- 发送包含上述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这似乎对我有用:
- 通过电子邮件将嵌入的表格发送给您自己
- 点击“转发”并根据需要修改电子邮件(您可以删除和添加徽标等内容)
- 点击“另存为模板”并为其命名(将电子邮件设为“全屏”并点击右下角的三个点)
当您想将其发送给客户时,单击“撰写”(全屏),最大化电子邮件 window,单击三个点(如上所述)并选择您创建的模板。