【问题标题】:Embedded Google form in email?在电子邮件中嵌入 Google 表单?
【发布时间】:2013-09-17 13:20:58
【问题描述】:

我通过 Google 应用程序脚本在电子邮件中嵌入了 Google 表单,但该表单无法从 Outlook 和 iPhone 正确提交。它仅适用于 Google Mail 客户端?

有没有办法解决这个从 iphone 或 Outlook 提交的问题?

谢谢 很多

【问题讨论】:

  • 您在 Outlook 和 iPhone 上看到了什么问题。可以发一些截图吗。如果这与 Google Apps 脚本有关,您能否发布您正在使用的代码。
  • 这是a previous question 的后续,代码在那个答案中。

标签: google-apps-script google-apps google-forms


【解决方案1】:

要使用嵌入在电子邮件中的表单,电子邮件客户端需要支持 html 表单。 Outlook 有自己的表单,但不支持 html 表单元素 (reference)。我还没有找到 iPhone 的参考资料,但它可能也限制了对 html 的支持。 (我在手机上使用gmail客户端……它支持表单。)

如果您使用来自 Send form by email and track responses in spreadsheet 的代码,那么您可以扩展您的脚本,为电子邮件客户端中不支持 HTML 表单的用户提供 doGet 函数。

previous gist 已根据这些更改进行了更新。 (其实gist已经有了doGet()函数。)

代码.gs

通过添加 doGet() 函数来扩展此代码,该函数将托管与您在电子邮件中嵌入完全相同的表单。

/**
 * GET handler to provide alternate online form.
 */
function doGet() {
  // Build survey body
  var template = HtmlService.createTemplateFromFile('emailTemplate');
  template.scriptUrl = ScriptApp.getService().getUrl();
  template.serialNumber = getGUID();  // Generate serial number for this response
  var app = template.evaluate();
  return app;
}

sendSurvey()函数进行如下修改:

var plainText = 'Please complete this survey online at: ' + scriptUrl;
html += '<p>Alternatively, you may <A href="' + scriptUrl + '"> complete this survey online.</A>';

// Send email form
GmailApp.sendEmail(recipient, subject, plainText, {htmlBody:html} );

现在,在其电子邮件客户端中不支持 HTML 的收件人将收到带有地址的纯文本消息,他们可以将地址粘贴到浏览器中,而不支持 &lt;FORM&gt; 的 HTML 客户端将有一个可点击的在线表单链接。

【讨论】:

  • 脚本如何知道每个用户的电子邮件客户端是否支持 HTML 表单?
  • 脚本无法知道,这就是为什么此解决方案让您在电子邮件中构建两种替代方案,一种用于纯文本用户,另一种用于 HTML 但没有表单的用户。
猜你喜欢
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2022-11-10
  • 2011-09-01
  • 1970-01-01
  • 2018-07-19
  • 2018-11-03
  • 2011-12-07
相关资源
最近更新 更多