Google 表格应用程序脚本不读取发布请求的参数

问题描述 投票:0回答:1

我需要将我网站上的表单的回复发送到谷歌表格。我已经完成了表格,所以我没有将其包含在这里。我使用应用程序脚本 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是正确的

javascript google-sheets google-apps-script fetch
1个回答
0
投票

查看作为网络应用程序的 Google Apps 脚本部署和电子表格共享设置。部署应设置为按照您的方式运行,或者如果您愿意以任何其他方式运行,则应相应地设置电子表格共享设置,即任何拥有链接的编辑者。

另外,删除以下标题

"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type,Authorization"

因为一些标头将被 Google 覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.