Произошла ошибка при транспортировке или обработке этого запроса.Код ошибки = 10, путь = / wardeninit - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь передать объект (содержимое строки листа) в шаблон скрипта приложения.Вы можете увидеть строку на скриншоте.

enter image description here

Моя функция в скрипте приложений содержит:

var sendableRows = rows.filter(function (row) { //ONLY CHECKED ROWS.
  return row['Index'] == true;
});  
var sendableRow = sendableRows[0];
Logger.log('sendableRow '+ JSON.stringify( sendableRow));

var html = HtmlService.createTemplateFromFile('RowPopup');
html.row = JSON.stringify(sendableRow);
var h =html.evaluate();

SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
  .showModalDialog(h, 'Create Documents');

Оператор logger создает:

 sendableRow {"Index":true,"Timestamp":"2019-02-12T21:09:14.000Z","FROM":222222,"CONVERSATION":"THIS IS A TEST","ME":"","relativeRow":14,"absoluteRow":15}

Мой Rowpopup.html:

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
  <script>
    // Prevent forms from submitting.
    function preventFormSubmit() {
      var forms = document.querySelectorAll('forms');
      for (var i = 0; i < forms.length; i++) {
        forms[i].addEventListener('submit', function(event) {
          event.preventDefault();
        });
      }
    }
    window.addEventListener('load', preventFormSubmit);

    function handleFormSubmit(formObject) {
      // the output from form goes to processDocBuildHtml
      google.script.run
          .withSuccessHandler(updateUrl)
          .processRowPopupHTML(formObject);
    }

    function updateUrl(url) {
      var div = document.getElementById('output');
      div.innerHTML = '<a href="' + url + '">Sent!</a>';
    }
  </script>
</head>

<body>
  <form id="myForm" onsubmit="handleFormSubmit(this)">

    <div>
      <label for="optionList">Click me</label>
      <select id="optionList" name="email">
        <option>Loading...</option>    
      </select>
    </div>

    <br>
    <div>
    </div>

    <br>
    <div>
      <textarea name="message" rows="10" cols="30">
The cat was playing in the garden.
      </textarea>
    </div>
    <div id="textboxes"></div>

    <div id="insert"></div>

    <input type="submit" value="Submit" />
  </form>

  <div id="output">
  </div>

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
  <script src="//rawgithub.com/indrimuska/jquery-editable-select/master/dist/jquery-editable-select.min.js"></script>
  <link href="//rawgithub.com/indrimuska/jquery-editable-select/master/dist/jquery-editable-select.min.css" rel="stylesheet">

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

    return myObj['CONVERSATION'];
  }
  </script>
</body>

Когда я запускаю это, я вижу:

enter image description here

Что свидетельствует о некоторой проблеме с "надзирателем".

Кроме того, я не вижу ожидаемых данных, выводимых на консоль в:

       console.log('row');
       var myObj = JSON.parse(jsonRow);
       console.log(myObj['CONVERSATION']);

Что я делаю неправильно?

Ответы [ 2 ]

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

Ваш клиентский код никогда не вызывает getConversations, поэтому вы не видите его на консоли.Среди многих способов сделать это можно добавить IIFE для вызова этой функции, добавив следующее между <script> тегами

(function (){getConversations()}());


С другой стороны, упомянутое сообщение об ошибке в ChromeКонсоль инструментов разработчика появляется даже с самым простым кодом, подобным следующему
function myFunction(){
  var html = HtmlService.createHtmlOutputFromFile('index');
  SpreadsheetApp.getUi().showModalDialog(html, 'Test')
}
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Hello world!
  </body>
</html>

Так что это не вы, это Google

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

Вы только что объявили функцию getConversations.Он не выполняется до тех пор, пока не будет вызван ().Чтобы выполнить непосредственно при загрузке, попробуйте

(function getConversations(){})()
...