@Kaunov_ivan

Как отправить данные javaScript — ом в гугл таблицы?

Задача: сделать форму связи не используя никакого бэкэнда. Отправкой AJAX-запроса на скрипт в гугл таблице и сохранение данных в таблице гугла.
html:
<textarea type="text" id="question" class="form-control text-size input-group-lg-v" name="question"></textarea>
   <input type="text" class="form-control" id="mail" name="email">
   <button class="btn btn-info btn-sm span-btn" type="submit" onclick="sendQuestion()"> Отправить </button>

js:
function sendQuestion() {
		var email = $('#mail').val();
		var question = $('#question').val();
		if(email == ''){
			alert('Вы не ввели E-mail!');
			return false;
		};
		$.ajax({
	        type: 'POST',
	        url: 'http://script.google.com/macros/s/AKfycbz6tFgfpy3JzBGXVL3O0GsZPNVN9l9GPr7ZXT6Oo_IfB9GC-4E/exec',
	        data: {'email'    : email,
				   'question' : question},
	        cache: false,
	        success: function(data){
				console.log("success: "+data);
	        },
			error: function(err){
				console.log("error: "+err)
			}
	    });
		alert("Спасибо! Ответ будет отправлен на e-mail "+email);
	};

google script:
function doGet(e){
  var sheet = SpreadsheetApp.openById("1iZazQ8YSMa6b9WFKTHJ99WooEC48nH9IF1x9fh6dQ9Y");
  obj = JSON.parse(e.parameter.p1);
  sheet.appendRow(obj);
}


на данном этапе выдает ошибку при отправке запроса:

XMLHttpRequest cannot load https://script.google.com/macros/s/AKfycbz6tFgfpy3... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'zolpol-local2' is therefore not allowed access.
  • Вопрос задан
  • 3648 просмотров
Пригласить эксперта
Ответы на вопрос 3
MhMadHamster
@MhMadHamster
Вы пытаетесь использовать ajax кросс-доменно, однако политика безопасности ограничивает его таким образом что вы можете сделать ajax только на тот же домен, для решения вашей задачи попробуйте воспользоваться JSONP
Ответ написан
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Здравствуйте, Kaunov_ivan
  1. Ваша функция на сервере Google Apps Script ничего не возвращает.
  2. Ваш сервер на Google Apps Script ожидает GET-запрос.

Код сервера
function doPost(e){
  var response = {};
  try {
    var sheet = SpreadsheetApp.openById('1iZazQ8YSMa6b9WFKTHJ99WooEC48nH9IF1x9fh6dQ9Y');
    sheet.appendRow([new Date(), JSON.stringify(e)]);
    response = {'result': 'OK'};
  } catch(err) {
    response = {'error': 'error'};
  } finally {    
    return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
  }
}


С уважением.
Ответ написан
@Sebring
Здравствуйте, пример решения так же выдает "No 'Access-Control-Allow-Origin' header is present"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы