WedX - журнал о программировании и компьютерных науках

Использование скрипта Google Apps в качестве службы для извлечения данных из электронной таблицы

Я новичок в этой технике и давно занимаюсь исследованиями с ограниченным успехом. (Есть много инструкций и руководств, но многие из них устарели и больше не актуальны или не работают.) Я пытаюсь создать GAS, который доставляет данные в виде объекта из листа Google в запрос javascript. . У меня есть несколько ограничений: JS находится только во внутренней интрасети, мои настройки Chrome (v58.0) ограничивают XMLHttpRequest (который отлично работает в моей версии IE10), я не могу получить доступ к консоли разработчика в Chrome (могу в IE) и Я не могу использовать JQuery или любой другой плагин. Кажется, что все на стороне GAS работает и обеспечивает то, что должно, но проблема, похоже, заключается в JS.

Когда я обращаюсь к странице напрямую (через то, что создается doGet(), доставляется текстовый результат объекта. Все данные отображаются так, как должны, но в виде простого текста.

Вот мой ГАЗ (выполнять от имени меня, анонимно):

function doGet() {
var oReturnLinks = [];
var sLinks = SpreadsheetApp.openById("secret").getSheetByName("links");
var oLinks = sLinks.getSheetValues(2, 1, -1, -1);

//loop over data and determine what to return
for (a=0;a<oLinks.length;a++) {
    if (oLinks[a][0] == true && oLinks[a][1].trim() != '' && oLinks[a][2].trim() != '' && oLinks[a][3].trim() != '' && oLinks[a][4].trim() != '' ) {

        oReturnLinks.push(oLinks[a]);

    }

}

if (oReturnLinks.length > 0) {

    return ContentService.createTextOutput(JSON.stringify(oReturnLinks)).setMimeType(ContentService.MimeType.JAVASCRIPT);

} else {

    return ContentService.createTextOutput(JSON.stringify("no data returned")).setMimeType(ContentService.MimeType.JAVASCRIPT);

}

}

Затем в моем JS в моей интрасети (это работает в IE10):

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://script.google.com/macros/s/secret/exec", false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send();
var response = JSON.parse(xhttp.responseText);

Я также пробовал это:

var s
s = document.createElement("script");
s.src = "https://script.google.com/macros/s/secret/exec";
var oResult = JSON.stringify(s);
alert(oResult);

... но производит

{}

в результате.

Если я добавлю это к выходному содержимому:

'(' + JSON.stringify(oReturnLinks) + ')'

Я получаю это:

[Объект HTMLScriptElement]

... как выход.

Если я изменю тип mime в GAS на JSON, я получу ошибку SEC7112 в IE (был заблокирован из-за несоответствия типа mime) и какую-то ошибку в Chrome, которую я не вижу.

Должно быть кросс-браузерное решение для этого? Я чувствую, что это что-то простое, что мне не хватает.


Ответы:


1

Вы устанавливаете тип MIME как JAVASCRIPT вместо JSON.

return ContentService.createTextOutput(JSON.stringify(oReturnLinks))
  .setMimeType(ContentService.MimeType.JSON);
30.05.2017
  • Да, я попробовал это и добавил дополнение ( на обоих концах вывода. Вот когда я получаю ошибку SEC7112 в IE 30.05.2017
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]