@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.
  • Вопрос задан
  • 6008 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
  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);
  }
}


С уважением.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MhMadHamster
@MhMadHamster
Вы пытаетесь использовать ajax кросс-доменно, однако политика безопасности ограничивает его таким образом что вы можете сделать ajax только на тот же домен, для решения вашей задачи попробуйте воспользоваться JSONP
Ответ написан
Ваш ответ на вопрос

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

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