首页 > 解决方案 > 在 html 文件中显示来自应用程序脚本文件的数组

问题描述

我有一系列在应用程序脚本中获得的电子邮件草稿。我想在一个选择元素的 html 文件中显示它们,但是当我运行它时它显示为空白。下面的代码

代码.gs

function doGet(e) {
  return HtmlService.createHtmlOutput("index");
}


function doSomething() {

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

  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.setAttribute("value", arr[i]);
        option.appendChild(txt);
        document.getElementById("select").appendChild(option);
  }

索引.html

<!DOCTYPE html>
<html>
  <head>
    <script>
      google.script.run.doSomething();
    </script>
  </head>
  <body>
    <select id="select" class="addon-select addon-form-input"></select>
  </body>

标签: javascripthtmlgoogle-apps-script

解决方案


像这样的东西:gs:

function doSomething() {
  var drafts=GmailApp.getDrafts();
  var drafty=[];
  for(var i=0;i<drafts.length;i++){
    drafty.push(drafts[i].getMessage().getSubject());
  }
  Logger.log(drafty);
  return drafty;
}

html:

<!DOCTYPE html>
<html>
  <head>
    <script>
      google.script.run
      .withSuccessHandler(function(A){
        var id='select';
        var select = document.getElementById(id);
        select.options.length = 0; 
        for(var i=0;i<A.length;i++) {
          select.options[i] = new Option(A[i],A[i]);
        }
      })
      .doSomething();
    </script>
  </head>
  <body>
    <select id="select"></select>
  </body>
</html>

推荐阅读