Подключить массив писем к html файлу - PullRequest
0 голосов
/ 05 января 2020

Я сейчас работаю в скрипте приложений и хочу показать массив в моем html выпадающем списке. Я пытался подключить его, но раскрывающийся список отображается пустым, когда я делаю. Вот что у меня есть:

РЕДАКТИРОВАТЬ Я понял, что проблема в том, что функция GmailApp не работает в файле html, и не могу понять, как его запустить.

    <div class ="custom-select"><td class="standard"><select id="select"></select> </td></div>

    <script>

        // get drafts
        var drafts = GmailApp.getDrafts();
        var drafty = [];
        for(var i = 0; i < drafts.length; i++)
        {
            drafty.push(drafts[i].getMessage().getSubject());
        }

        var select = document.getElementById("select"),
                 arr = drafty

         for(var i = 0; i < arr.length; i++)
         {
             var option = document.createElement("OPTION"),
                 txt = document.createTextNode(arr[i]);
             option.appendChild(txt);
             option.setAttribute("value",arr[i]);
             select.insertBefore(option,select.lastChild);
         }

    </script>

Ответы [ 3 ]

0 голосов
/ 05 января 2020

Как насчет этого?

var option = document.createElement("OPTION"),
          txt = document.createTextNode(arr[i]);

        option.setAttribute("value", arr[i]);
        option.appendChild(txt);
        document.getElementById("select").appendChild(option);
0 голосов
/ 06 января 2020

GmailApp - это класс скриптов приложений, который должен называться серверной

. Есть несколько способов сделать это, я рекомендую в вашем случае:

Если у вас есть code.gs и html, сохраненный в вашем WebApp, вы можете вызывать из <script> ... </script> части из html части code.gs с помощью метода google.script.run .

Пример:

code.gs

function doGet(){
  return HtmlService.createHtmlOutputFromFile('index'); 
}
function getDrafts(){
  var drafts = GmailApp.getDrafts();
  var drafty = [];
  for(var i = 0; i < drafts.length; i++)
    {
      drafty.push(drafts[i].getMessage().getSubject());
    }
  return drafty;
}

index. html

...
<script>
...
  google.script.run.withSuccessHandler(onSuccess).getDrafts();
  function onSuccess(drafty) {
        var select = document.getElementById("select"),
        arr = drafty;
        for(var i = 0; i < arr.length; i++)
         {
             ...
         }
...
</script>
...

В качестве альтернативы вы можно также использовать скриптлетов для вызова функций скриптов приложений внутри вашего HTML кода.

0 голосов
/ 05 января 2020

Вы получаете правильное значение здесь?

txt = document.createTextNode(arr[i]);

Попробуйте что-то вроде этого

       var option = document.createElement("OPTION"),
         txt = document.createTextNode(arr[i]);
         option.innerHTML.appendChild(txt);
         option.value(arr[i]);
         select.insertBefore(option,select.lastChild);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...