Я пытаюсь выполнить функцию doGet электронной таблицы Google, чтобы получить некоторые данные из листа. Данные должны быть возвращены в объекте JSON. На данный момент я возвращаю простой фиктивный контент в объекте JSON, потому что я еще не смог получить объект JSON и прочитать данные из него.
У меня есть простая функция doGet, которая вызывается HTML-сайтом.
Функция doGet содержит функцию count (), которая считает каждый вызов этой функции doGet. Таким образом, я знаю, что doGet выполняется (эта часть работает нормально).
function doGet(e){
//add +1 to value of a specific spreadsheet cell;
//count() always works, even though I don't get the JSON object.
count();
var content = {
"answer": "This is an answer",
"body" : "Welcome to the web app."
};
//convert JavaScript object into a string
//so that it can be sent
var JSONString = JSON.stringify(content);
var JSONOutput = ContentService.createTextOutput(JSONString);
JSONOutput.setMimeType(ContentService.MimeType.JSON);
return JSONOutput;
}
Теперь я создал HTML-сайт, который вызывает эту функцию doGet. Я регистрирую некоторые части, чтобы увидеть, что на самом деле выполняется.
<html>
<head>
<title>Call GAPI</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script src="./jquery/jquery-3.3.1.min.js" type="text/javascript"></script>
<script>
console.log("Prepare API Call");
$(function(){
$.getJSON('https://script.google.com/macros/s/*encrpyted-URL*/exec?callback=?', function(json) {
var json = JSON.parse(result); //parsing is necessary because response is actually a TextOutput which needs to be turned into a javascript object
console.log(json.answer); //not executed
console.log("Done API Call"); //not executed
});
});
console.log("End");
</script>
</body>
</html>
Большую часть времени я вижу это в консоли:
Prepare API Call
End
Итак, все, кроме вызова API, выполняется.
Иногда я также получаю блокировку ошибки CORB, что странно, потому что это не всегда появляется:
Блокировка перекрестного чтения (CORB) заблокировала ответ перекрестного происхождения https://script.google.com/macros/s/myURL/exec?callback=jQuery331014863254459179753_1548439425031&_=1548439425032 с типом MIME text / html. Подробнее см. https://www.chromestatus.com/feature/5629709824032768.
Не странно ли, что в нем говорится, что я получил текстовый / html ответ? В функции doGet возвращаемый объект объявляется как объект JSON. Тем не менее, goGet возвращает объект TextOutput или строку. Вот почему это нужно разобрать ...
Я не знаю, почему я не могу прочитать возвращенный объект JSON и почему я получаю эту ошибку CORB. Кто-нибудь может мне помочь?
Еще одна вещь: вызов только по URL / exec «заблокирован политикой CORS»; так что мне как-то нужно добавить URL / exec? callback =? чтобы решить это.