Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GAS/iOS邮件应用程序:嵌入式HTML表单的方法从post转换为get_Ios_Google Apps Script_Html Email_Forms_Http Post - Fatal编程技术网

GAS/iOS邮件应用程序:嵌入式HTML表单的方法从post转换为get

GAS/iOS邮件应用程序:嵌入式HTML表单的方法从post转换为get,ios,google-apps-script,html-email,forms,http-post,Ios,Google Apps Script,Html Email,Forms,Http Post,首先,我不确定这是谷歌应用程序脚本还是iOS邮件应用程序的问题。我花了一段时间试图找到有关iOS邮件应用程序转换嵌入式html表单方法的任何信息,但找不到任何东西 我嵌入了一个简单的HTML表单,并用谷歌应用程序脚本通过电子邮件发送。我使用post作为表单的方法,并且在我要发回的脚本中设置了doPost函数 这几个月来一直很有效,但我昨天收到一位用户的消息,说由于某种原因,他们在提交表单时遇到了一个奇怪的错误。该用户拥有一部iPhone,并使用附带的邮件应用程序发送电子邮件 我已经建立了一个非常

首先,我不确定这是谷歌应用程序脚本还是iOS邮件应用程序的问题。我花了一段时间试图找到有关iOS邮件应用程序转换嵌入式html表单方法的任何信息,但找不到任何东西

我嵌入了一个简单的HTML表单,并用谷歌应用程序脚本通过电子邮件发送。我使用post作为表单的方法,并且在我要发回的脚本中设置了doPost函数

这几个月来一直很有效,但我昨天收到一位用户的消息,说由于某种原因,他们在提交表单时遇到了一个奇怪的错误。该用户拥有一部iPhone,并使用附带的邮件应用程序发送电子邮件

我已经建立了一个非常简单的测试脚本,其中包含一个输入和一个提交,该提交将发布到一个简单脚本以测试问题。在iPad上测试后,我发现无论出于何种原因,当我使用iOS邮件应用程序提交时,我的脚本返回一个错误,即找不到doGet函数。我还使用Gmail iOS应用程序测试了这个表单,它调用我的doPost方法时没有任何问题

为了看看会发生什么,我也在脚本中添加了一个doGet函数,它运行得很好

为什么iOS邮件应用程序将我的表单方法从post转换为get

创建电子邮件的测试脚本:

 function sendEmail(){
  var emailhtml = '<body><form name="iOSemailformtest" action="'+ScriptApp.getService().getUrl()+'" method="post">';
  emailhtml += '<input type="radio" name="approval" value="approve">Approve Request<br />';
  emailhtml += '<input type="radio" name="approval" value="deny">Deny Request<br />';
  emailhtml += '<input type="submit" value="Submit Decision">';
  emailhtml += '</form></body>';
  MailApp.sendEmail("myemail@email.com", "iOS Email Form Test", "HTML Not Supported?", {htmlBody: emailhtml});
}

如果使用post提交表单不可靠,我会切换到只触发一个函数,甚至不使用表单。通过逐个从字段中获取值来收集表单中的数据,或者使用this.parent获取表单父元素中所有元素的对象

var myFieldValue = document.getElementById('idOfInputField').value;


由于电子邮件客户端剥离/禁用Javascript,使用这种方法不会遇到更多问题吗?我也不确定这是否有效,因为我的组织使用Google Apps,Gmail似乎会自动将onsubmit属性替换为一个警报,请求用户允许向外部源提交数据。你能同时拥有doGet和doPost吗?如果它们没有同时被触发,那么也许两者都能对你整体起作用?我已经做了有限的测试,发现两个函数都有可能,并且它可以成功地调用每个函数。我还没有机会,但我需要知道我是否可以访问doGet中的变量。doGet和doPost都需要的任何变量都可以放在它们之外。您可以使用doGet和doPost作为分支到中心代码的位置。所以只需在doGet和doPost中使用相同的函数名。他们所要做的就是触发“真实”代码。不幸的是,我不认为这种变通方法会有帮助。它会触发doGet函数,但不会将变量作为url参数传递。
<form onsubmit="myFunctionToTrigger(this)">
<input onchange="myFunctionToTrigger(this.parent)">