Код в apps script отправляется но не сохраняется в таблице

Код в apps script отправляется но не сохраняется в таблице. В логи браузера написано так:

Response: {"result":"error","error":{}}

Код в Apps Script

function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('birthdaysheets');
  var data = e.parameter;

  Logger.log('Received data: ' + JSON.stringify(data));

  if (!sheet) {
    Logger.log('Sheet not found');
    return ContentService.createTextOutput('Sheet not found').setMimeType(ContentService.MimeType.TEXT);
  }

  var timestamp = new Date();
  var name = data.Name || '';
  var willcome = data.willcome || '';

  if (!name || !willcome) {
    Logger.log('Missing required fields');
    return ContentService.createTextOutput('Missing required fields').setMimeType(ContentService.MimeType.TEXT);
  }

  sheet.appendRow([timestamp, name, willcome]);

  return ContentService.createTextOutput('Success').setMimeType(ContentService.MimeType.TEXT);
}

JS код на сайте

const scriptURLGoogle = 'https://script.google.com/macros/s/AKfycbzzOTtdqIB6GxYixcTB4ZH2iFsXvtLFzEI8-WMSJR6iy7ltiBtmrkZcNke5RfXLpVkl/exec';
  const form = document.forms['submit-to-google-sheet'];

 form.addEventListener('submit', e => {
    e.preventDefault();
    const formData = new FormData(form);

    fetch(scriptURLGoogle, { method: 'POST', body: formData })
            .then(response => {
              if (!response.ok) {
                throw new Error('Network response was not ok');
              }
              return response.text();
            })
            .then(result => {
              console.log('Response:', result);
              alert('Данные успешно отправлены!');
            })
            .catch(error => {
              console.error('Error:', error);
              alert('Ошибка отправки данных!');
            });
  });

Ответы (1 шт):

Автор решения: BotYourBiz

Если это посторонний сайт (т.е. не Гугл Веб), то любые данные отправленные методом POST будут заблокированы и не пропущены из-за политики безопасности CORS.

Просто так это не обойдешь. Тут есть несколько вариантов:

  1. Самый первый вариант - это использовать GET запрос, но надо понимать все ограничения и другие фишки этого метода
  2. Использовать Гугл Веб интерфейс прямо в Google Apps
  3. Или заморочиться c обратным вызовом JSONP. Очень прикольный, красивый и хитрый. НО.... не простой в понимании и реализации. Однако с Google script через doGet() Получается
→ Ссылка