Как отправить значение, возвращаемое функцией gs, в шаблон HTML? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь создать HTML-шаблон в зависимости от содержимого электронной таблицы. Но с недели я застрял на отправке значений, возвращаемых функцией GS, в шаблон HTML. Когда я вызываю функцию, расположенную в html, я получаю ожидаемый результат. Но когда я вызываю ту же функцию, которая находится в файле gs.code, я получаю неопределенное значение. Что я делаю не так?

Это работает, но бесполезно:

HTML-файл:

<script>
  function addOption() {
      var x = document.getElementById("xBad");
      var option = document.createElement("option");
      option.text = newOpt();
      x.add(option);
  };
  function newOpt() {
      var str = "extra option";
      return str;
  }
</script>

Но когда я заменяю функцию, которая возвращает дополнительную опцию в файл gs, где именно она мне нужна, она добавляет undefined.

HTML-файл:

<script>
  function addOption() {
  var x = document.getElementById("xBad");
      var option = document.createElement("option");
      option.text = google.script.run.newOpt();
      x.add(option);
  }
</script>

GS файл:

function newOpt() {
  var str = "extra option";
  return str;
}

Полагаю, я прочитал всю документацию по API Google об этом и всех проблемах, связанных с моей, в stackoverflow, но, боюсь, не могу найти объяснение. Единственный ответ, который, как я понял, предполагает, что google.script.run не возвращает значений, пока в код не будет вставлен SuccessHandler, но я действительно не знаю, какое условие может быть успешным или неудачным в этом случае.

1 Ответ

1 голос
/ 09 апреля 2019

Что-то вроде этого может работать для вас:

<script>
  function addOption() {
      google.script.run
      .withSuccessHandler(function(txt){
        var x = document.getElementById("xBad");
        var option = document.createElement("option");
        option.text = txt;
        x.add(option);
      })
      .newOpt();
  }
</script>
...