Есть более простое решение. В ответ вы получаете строку JSONP, данные которой хранятся в функции обратного вызова, как упоминал @dakab.
Помимо этого, недавно Google включил в ответ дополнительный текст, чтобы помочь с некоторыми средствами защиты своего API от перехвата контента. Вы можете узнать больше об этом в этой ветке Github. . Ответ, который вы получаете сейчас, представляет собой неразборчивую строку в такой форме:
/*O_o*/
google.visualization.Query.setResponse({…});
Один из способов справиться с обеими проблемами (строка «комментарий» и данные, скрытые внутри функции обратного вызова) - это оценить функцию. Независимо от того, рискованно это или нет, это неотъемлемая часть формата JSONP, поэтому вы должны знать, откуда приходит ваш ответ, и решать, стоит ли рисковать. Но, учитывая, что он исходит от запроса к серверу Google, и с точки зрения синтаксического анализа, он работает.
Итак, в вашем случае вы могли бы просто объявить функцию обратного вызова (обратите внимание, что вы можете передать собственное имя функции в строке запроса, как также упоминается в руководства для разработчиков Google), а затем оцените его. Меня вдохновляет эта тема:
//Declare your call back function
function callback(data){
return data;
}
//Evaluate and store the data in your callback function
var result = eval(UrlFetchApp.fetch(url + uri, options).getContentText());
В «результате» у вас будет уже проанализированный JSON, который вы можете преобразовать во все, что захотите.
person
Diego
schedule
09.10.2016