我需要将我网站上的表单的回复发送到谷歌表格。我已经完成了表格,所以我没有将其包含在这里。我使用应用程序脚本 doPost 方法来捕获请求并将响应添加到工作表中。
用于从我的客户端获取的代码。
const data = {
name: "john doe",
email: "[email protected]",
phone: "1234567890",
message: "When does Malhar start?",
}
const scriptUrl = 'MY_SCRIPT_URL'; // Replace with your Google Apps Script URL
try {
const response = await fetch(scriptUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: new URLSearchParams(data)
});
if (response.ok) {
alert('Form submitted successfully');
} else {
alert('Form submission failed');
}
} catch (error) {
console.error('Error:', error);
}
我的应用程序脚本代码如下:
function doPost(e) {
Logger.log( JSON.stringify(e));
var sheet = SpreadsheetApp.openById('14Sz38NHK-mYINcb7B0QaYe_-djTK_NLysKBhEAf8_ec').getActiveSheet();
var rowData = [];
rowData.push(new Date()); // Timestamp
rowData.push(e.parameter.name);
rowData.push(e.parameter.email);
rowData.push(e.parameter.phone);
rowData.push(e.parameter.message);
sheet.appendRow(rowData);
var headers = {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type,Authorization"
};
return ContentService.createTextOutput("Success")
.setMimeType(ContentService.MimeType.JSON)
.setHeaders(headers);
}
当我使用 Postman 检查 API 返回的内容时,它显示: 获取对象 SpreadsheetApp 上的方法或属性 openById 时出现意外错误。
但是,我确信我使用的ID是正确的
查看作为网络应用程序的 Google Apps 脚本部署和电子表格共享设置。部署应设置为按照您的方式运行,或者如果您愿意以任何其他方式运行,则应相应地设置电子表格共享设置,即任何拥有链接的编辑者。
另外,删除以下标题
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type,Authorization"
因为一些标头将被 Google 覆盖。