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, время: 12:53. |