javascript - 由于引用错误,csv 似乎没有出现

标签 javascript html json csv google-apps-script

我对这一切都很陌生,所以我很确定这是我的一个简单疏忽,但我无法让它运行。

当我部署下面的代码并单击按钮时,它没有执行任何操作。当我在浏览器中检查 html 时,它显示“userCodeAppPanel:1 Uncaught ReferenceError: csvHTML is not defined 在 HTMLInputElement.onclick"

当我从 Code.gs 运行函数 csvHTML 时,我可以在我的 Logger.log 中看到预期的结果,所以看来问题不在我的 code.gs 中

我想要实现的是在 html 中显示 csv 结果。当一切正常时,我想以其他方式处理数据。

下面附上我的代码。

索引.html:

<!DOCTYPE html>
<!-- styles -->
<?!= HtmlService.createHtmlOutputFromFile("styles.css").getContent(); ?>

<div class="content">

  <h1>csv representation</h1>

  <input class="button" type="submit" onclick="html();" value="Refresh" id="refresh"><br>
  <div id="tabel"></div>
  <svg class="chart"></svg>

</div>

<!-- javascript -->
<script src="//d3js.org/d3.v3.min.js"></script>
<?!= HtmlService.createHtmlOutputFromFile("chart.js").getContent() ?>
<?!= HtmlService.createHtmlOutputFromFile("main.js").getContent() ?>

<script>

function html()
{
var aContainer = document.createElement('div');
    aContainer.classList.add('loader_div');
    aContainer.setAttribute('id', 'second');
    aContainer.innerHTML = "<div class='loader_mesage'><center>Fetching csv list. Please be patient!<br /> <br /><img src='https://i.ibb.co/yy23DT3/Dual-Ring-1s-200px.gif' height='50px' align='center'></img></center></div>";
    document.body.appendChild(aContainer);

google.script.run
           .withSuccessHandler(showTable)
           .csvHTML();
}

function showTable(tabel)
{
document.getElementById("tabel").innerHTML = tabel;
var element = document.getElementById("second");
element.parentNode.removeChild(element);
}
</script>

和代码.gs:

function doGet(e) {
  return HtmlService.createTemplateFromFile("index.html")
    .evaluate()
    .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}


// Fecth Data and make a csv output.

function csvHTML()
{
var query = "{ 'query': 'SELECT * FROM `<some table>` limit 1000;', 'useLegacySql': false }";
var job = BigQuery.Jobs.query(query, <projectName>);
var json = JSON.parse(job);
var tabel = json2csv(json); 
Logger.log(tabel)
return tabel;  
}

function json2csv(json, classes) {
  var headerRow = '';
  var bodyRows = '';
  classes = classes || '';

  json.schema.fields.forEach(function(col){
    headerRow +=col.name+",";
  })

  json.rows.forEach(function(row){
   row.f.forEach(function(cell){
      bodyRows +=cell.v+",";
    })

                  })
     return headerRow + bodyRows }

最佳答案

所以感谢TheMaster的建议,我改写成如下:

index.html:

<!-- javascript -->
<script src="//d3js.org/d3.v3.min.js"></script>

<script>

function html()
{
var aContainer = document.createElement('div');
    aContainer.classList.add('loader_div');
    aContainer.setAttribute('id', 'second');
    aContainer.innerHTML = "<div class='loader_mesage'><center>Fetching csv list. Please be patient!<br /> <br /><img src='https://i.ibb.co/yy23DT3/Dual-Ring-1s-200px.gif' height='50px' align='center'></img></center></div>";
    document.body.appendChild(aContainer);


google.script.run
           .withSuccessHandler(showTable)
           .csvHTML();
}

function showTable(tabel)
{
document.getElementById("tabel").innerHTML = tabel;
var element = document.getElementById("second");
element.parentNode.removeChild(element);
}
</script>

<!DOCTYPE html>


<div class="content">

  <h1>csv representation</h1>

  <input class="button" type="submit" onclick="html();" value="Refresh" id="refresh"><br>
  <div id="tabel"></div>
  <svg class="chart"></svg>

</div>

Code.gs 没有被修改。

看来 <?!= htmlService.createHtmlOutputFromFile("styles.css").getContent(); ?>和其他 createHtmlOutputFromFile 妨碍了。最终我需要这些,但我会在稍后阶段弄清楚如何将其合并。

感谢所有的建议和帮助!

关于javascript - 由于引用错误,csv 似乎没有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432660/

相关文章:

javascript - JSON 安全最佳实践?

json - 将 json 值解码到 []byte 中,有时字符串可能会被转义 json

javascript - 在react js中更新事件的同级组件

javascript - GWT 服务器,在客户端构建 get() 和 post()

html - 具有动态页眉、页脚和内容的 CSS 和 html

html - 如何在 HTML 的新选项卡中打开链接?

javascript - 如何为动态创建的每个子div赋予唯一的id?

javascript - 在(某些)标签中搜索特定名称并转换为链接

javascript - 如何使用填充的输入值获取当前网站的html源

java - 从 yaml Autowiring springboot 中的 json 值