Google Apps Script处理Adobe表单提交时的内容类型错误问题
解决Adobe Acrobat Pro DC表单提交至Google Apps Script的错误问题
问题分析
出现An error occurred during the submit process. Cannot process content of type application/json; charset=utf-8.错误的核心原因有两点:
- 响应类型不匹配:Adobe Acrobat表单提交后,默认期望服务器返回
text/html类型的响应,而非代码当前返回的application/json格式,这是触发报错的直接因素。 - 提交数据格式错误:若未配置Acrobat表单的提交参数,表单会发送字段键值对(通常为
application/x-www-form-urlencoded或application/json),而非填充后的完整PDF二进制流,原代码直接将POST内容转为PDF的逻辑不成立。
解决步骤
步骤1:调整Acrobat表单的提交设置
打开你的Adobe Acrobat Pro DC表单,按以下步骤配置提交参数:
- 进入表单编辑模式,右键点击提交按钮 → 属性 → 动作标签页
- 选择「提交表单」动作,点击「添加」
- 在弹出的设置窗口中:
- 填入部署好的Google Apps Script Web App URL
- 「导出格式」下拉菜单选择PDF(确保发送填充后的完整PDF文件)
- 「提交选项」选择「使用HTTP POST」
- 保存设置后重新导出表单供用户使用
步骤2:修正Google Apps Script代码
调整代码的响应类型为text/html,确保Acrobat能识别提交结果,同时保留邮件发送和Drive上传逻辑:
function doPost(e) { try { console.log('Event Object: ', JSON.stringify(e)); if (!e || !e.postData || !e.postData.contents) { throw new Error("未接收到提交数据"); } // 验证提交内容是否为PDF格式 if (e.postData.type !== 'application/pdf') { throw new Error("收到非PDF格式内容:" + e.postData.type); } var fileBlob = Utilities.newBlob(e.postData.contents, 'application/pdf', '用户提交表单.pdf'); // 发送带PDF附件的邮件 MailApp.sendEmail({ to: "youre@email.com", subject: "新表单提交通知", body: "附件为用户填写完成的表单PDF,请查收。", attachments: [fileBlob] }); // 上传PDF至Google Drive指定文件夹 var folder = DriveApp.getFolderById('你的Google Drive文件夹ID'); folder.createFile(fileBlob); // 返回HTML成功页面,让Acrobat识别提交完成 return ContentService.createTextOutput(` <!DOCTYPE html> <html> <body> <h3>表单提交成功!</h3> <p>感谢您的提交,我们已收到您的表单内容。</p> </body> </html> `).setMimeType(ContentService.MimeType.HTML); } catch (error) { console.error(error); // 返回HTML错误页面 return ContentService.createTextOutput(` <!DOCTYPE html> <html> <body> <h3>表单提交失败</h3> <p>错误信息:${error.message}</p> </body> </html> `).setMimeType(ContentService.MimeType.HTML); } }
步骤3:重新部署Web App
- 打开脚本编辑器,点击部署 → 新部署
- 选择「Web App」类型:
- 执行:选择「我」
- 谁可以访问:选择「任何人,甚至匿名」(若需权限限制可调整为「组织内任何人」)
- 点击「部署」,复制新的Web App URL并更新到Acrobat表单的提交设置中
内容的提问来源于stack exchange,提问作者Urgen
相关产品推荐
相关产品推荐

