JSONP+GreaseMonkey+GAS
Здравствуйте.
у меня следующая проблема, я не могу получить ответ от GAS через JSONP. кусок кода GM
var urlAPP="https://script.google.com/macros/s/AKfycby1bs7AbTMIfUx0_lltnPPpQOc5FVSPs1JD9oG9E_FUXXXXXX/exec?";
var paramsAPP="rate="+GM_getValue('Rate',7)+"&fixsum="+GM_getValue('FixSum',0)+"&callback";
console.log(urlAPP+paramsAPP);
JSONP(urlAPP+paramsAPP, function(response) {
console.log(response);
alert(response);
});
вот код GAS:
// Script-as-app template.
function doGet(e) {
try {
var rate=+e.parameter.rate;
var fixsum=+e.parameter.fixsum;
var urlSS='https://docs.google.com/spreadsheets/d/1ySQrRkxTxksoy9bD8IFHys_48ie6pSnDvJrUc5xxxx/edit'
var ss =SpreadsheetApp.openByUrl(urlSS);
var sheet = ss.getSheets()[1];
sheet.appendRow([rate, fixsum]);
return ContentService.createTextOutput(e.parameter.callback + '.call(this,"OK")').setMimeType(ContentService.MimeType.JAVASCRIPT);
} catch(e) {
return ContentService.createTextOutput(e.parameter.callback + '.call(this,"ERROR")').setMimeType(ContentService.MimeType.JAVASCRIPT);
}
}
GM правильно отправляет запрос, GAS правильно обрабатывает и формирует ответ,но я не могу получить и разобрать ответ. в консоли сообщение ReferenceError: __JSONP__4 is not defined сформированный ответ GAS __JSONP__4.call(this,"OK") Использую библиотеку http://devpro.it/code/209.html пример использования http://webreflection.blogspot.ru/201...for-jsonp.html PS пробовал вместо .call(this,"OK"), ставить .call(window,"OK"), ноль эмоций Куда втыкать лом? |
Разобрался, jsonp работает только через unsafeWindow
в GM в шапку добавляем // @grant unsafeWindow в html страницу (в head) дописываем
<script src="http://taorus.ru/js/JSONP.js" type="text/javascript"></script>
<script>function callGoogle(sURL){
JSONP(sURL, function(response) {
//код обработчика
alert(response);})
}
</script>
в теле скрипта GM вызываем функцию unsafeWindow.callGoogle(sURL)
var urlAPP="https://script.google.com/macros/s/AKfycby1bs7AbTMIfUx0_lltnPPpQOc5FVSPs1JD9oG9E_FUXXXXXX/exec?";
var paramsAPP="rate="+GM_getValue('Rate',7)+"&fixsum="+GM_getValue('FixSum',0)+"&callback";
var sURL= urlAPP+paramsAPP;
unsafeWindow.callGoogle(sURL);
в gas (развернутое как веб приложение) return ContentService.createTextOutput(e.parameter.callback+'.call(window, "ok")').setMimeType(ContentService.MimeType.JAVASCRIPT); |
| Часовой пояс GMT +3, время: 00:18. |