Sheets: Uncaught TypeError: google.script.run.withSuccessHandler (...). Не является функцией - PullRequest
0 голосов
/ 20 февраля 2019

enter image description here

У меня есть следующее в теле шаблона скрипта приложения:

    <script>

    function getConversations() {
       var jsonRow = <?= row ?>; //PASSED IN JSON
       console.log('row');
       var myObj = JSON.parse(jsonRow);
           console.log(myObj['CONVERSATION'].split('|'));

        return myObj['CONVERSATION'].split('|'); // array of texts

    };

            $(function() {
        google.script.run.withSuccessHandler(buildOptionList)
            .getConversations();

    });

           function buildOptionList(options) {
        var list = $('#optionList');
        //     alert('hi');
        //     https://tutorialzine.com/2010/11/jquery-data-method
        list.empty();
        for (var i = 0; i < options.length; i++) {
            console.log(options[i]);
            list.append('<option value="' + options[i].toLowerCase() + '">' + options[i] + '</option>');
        }
    };



    </script>

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

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Я понял, что допустил ошибку и мне вообще не нужен google.script.run.withSuccessHandler, так как я хотел обработать объект только на стороне HTML.Я закончил, используя:

    <script>


    function getConversations() {
       var jsonRow = <?= row ?>; //PASSED IN JSON
       console.log('row');
       var myObj = JSON.parse(jsonRow);
           console.log(myObj['CONVERSATION'].split('|'));

        return myObj['CONVERSATION'].split('|'); // array of texts

    };

           function buildOptionList(options) {
        var list = $('#optionList');

        list.empty();
        for (var i = 0; i < options.length; i++) {
            console.log(options[i]);
            list.append('<option value="' + options[i].toLowerCase() + '">' + options[i] + '</option>');
        }
    };

    (function (){buildOptionList(getConversations())}());
0 голосов
/ 20 февраля 2019
  • Вы хотите получить значение из getConversations() в buildOptionList().
  • row из var jsonRow = <?= row ?> создано на стороне ГАЗА.

Еслимое понимание верно, как насчет этой модификации?

сторона HTML:

  • В этой модификации getConversations() используется на стороне GAS и возвращает myObj['CONVERSATION'].split('|').Поэтому, пожалуйста, удалите getConversations(), потому что это не используется в этой модификации.
  • Использование google.script.run.withSuccessHandler(buildOptionList).getConversations(), getConversations() на стороне GAS запускается, и значение отправляется на buildOptionList().

Сторона GAS:

Пожалуйста, добавьте следующий скрипт в сценарий стороны GAS.

function getConversations() {
  var myObj = {CONVERSATION: "sample1|sample2|sample3"}; // This is a sample value. Because I'm not sure about row you use.
  return myObj['CONVERSATION'].split('|');
}
  • Здесь я не уверен насчет row.Итак, из вашего сценария я представил пример значения и использовал его.Пожалуйста, замените myObj на ваш.
  • Значение, созданное в getConversations(), отправляется buildOptionList(options).И вы можете получить значение как options.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...