Google表单提交后发出POST请求

时间:2018-11-03 23:00:07

标签: google-form

是否可以在每次填写表单时在Google Forms上调用外部API端点?

2 个答案:

答案 0 :(得分:1)

使用Google脚本非常简单。

只需创建一个绑定到电子表格的新项目并创建2个元素:

  • 将包含所有相关数据以进行调用的函数(有关从Google Apps脚本发出HTTP请求的信息,请参见docs
  • 链接到电子表格的触发器。您可以将其设置为在每次进行编辑或提交表单时运行

Voilà,您的工作表将调用您希望提交的任何端点。您甚至可以解析电子表格,以将数据返回到端点

答案 1 :(得分:1)

第一: 您需要设置App脚本项目,并通过以下方式进行操作:

访问 script.google.com 以打开脚本编辑器。 (您需要登录到Google帐户。)如果这是您第一次访问script.google.com,则会将您重定向到一个介绍Apps Script的页面。单击“开始脚本”以继续执行脚本编辑器。 欢迎屏幕将询问您要创建哪种脚本。单击空白项目或关闭。 在脚本编辑器中删除任何代码,然后粘贴以下代码。 videodoc会有所帮助

第二 您需要创建一个可安装的触发器,可以将其直接添加到表单中或包含响应的电子表格中

function setUpTrigger(){
  ScriptApp.newTrigger('sendPostRequest') /* this has the name of the function that will have the post request */
  .forForm('formkey') // you'll find it in the url
  .onFormSubmit()
  .create();
}

选中doc

第三 创建sendPostRequest函数并向其中添加UrlFetchApp

function sendPostRequest(e){
 // Make a POST request with form data.
var resumeBlob = Utilities.newBlob('Hire me!', 'text/plain', 'resume.txt');
var formData = {
  'name': 'Bob Smith',
  'email': 'bob@example.com',
  'resume': resumeBlob
};
// Because payload is a JavaScript object, it is interpreted as
// as form data. (No need to specify contentType; it automatically
// defaults to either 'application/x-www-form-urlencoded'
// or 'multipart/form-data')
var options = {
  'method' : 'post',
  'payload' : formData
};
  
UrlFetchApp.fetch('https://httpbin.org/post', options);
}

选中doc