是因为谷歌表单默认不支持通过NodeJS直接提交数据。谷歌表单是一种在线调查和数据收集工具,主要用于收集用户填写的表单数据。要通过NodeJS提交数据到谷歌表单,可以使用谷歌表单提供的API来实现。
谷歌表单提供了Google Apps Script,它是一种基于JavaScript的脚本语言,可以与谷歌表单、谷歌文档、谷歌表格等进行交互。通过编写Google Apps Script,可以在服务器端使用NodeJS发送HTTP请求,以模拟用户提交表单的操作。
以下是一个使用NodeJS发送HTTP请求提交数据到谷歌表单的示例:
axios
模块发送POST请求到谷歌表单的API地址,同时将表单数据作为请求的payload发送。Content-Type: application/x-www-form-urlencoded
。https://docs.google.com/forms/d/<form_id>/formResponse
。示例代码如下:
const axios = require('axios');
async function submitFormData(formData) {
const formId = '<your_form_id>';
const url = `https://docs.google.com/forms/d/${formId}/formResponse`;
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
};
const payload = new URLSearchParams();
Object.keys(formData).forEach((key) => {
payload.append(key, formData[key]);
});
try {
const response = await axios.post(url, payload, { headers });
console.log('Form submission successful');
console.log(response.data);
} catch (error) {
console.error('Form submission failed');
console.error(error);
}
}
// Example usage
const formData = {
name: 'John Doe',
email: 'johndoe@example.com',
message: 'Hello from NodeJS!',
};
submitFormData(formData);
在以上示例中,<your_form_id>
需要替换为你实际创建的谷歌表单的ID。formData
是一个包含表单字段和对应值的对象。
需要注意的是,谷歌表单的API可能会有限制或更新,具体使用方法和参数可参考谷歌表单的官方文档。此外,对于更复杂的表单需求,可能需要进一步研究和调整代码。
领取专属 10元无门槛券
手把手带您无忧上云