Код в 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.
Просто так это не обойдешь. Тут есть несколько вариантов:
- Самый первый вариант - это использовать GET запрос, но надо понимать все ограничения и другие фишки этого метода
- Использовать Гугл Веб интерфейс прямо в Google Apps
- Или заморочиться c обратным вызовом JSONP. Очень прикольный, красивый и хитрый. НО.... не простой в понимании и реализации. Однако с Google script через doGet() Получается