javascript - 将 json 数据插入 Google SpreadSheet 时出错

标签 javascript json google-sheets google-visualization google-sheets-api

我正在尝试将 JSON 数据插入 Google 电子表格中。这是我的代码,

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

<script>
var read=(function(){

data1={
        "jobstatus": [
                      {
                          "dateAndTime": "hi",
                          "jobId": "TCC_tfc",
                          "userId": "admin",
                          "status": "Completed",
                          "jobType": "Excel Upload"
                      }
                  ]
              };
var jobs = data1;
var datae = new google.visualization.DataTable();

datae.addRows(["datetime",jobs.jobstatus.dateAndTime],
          ['jobId', jobs.jobstatus.jobId],
          ['userId', jobs.jobstatus.userId],
          ['status', jobs.jobstatus.status],
          ['jobType', jobs.jobstatus.jobType]
      );});

</script>

在执行此代码时出现错误,如下所示

TypeError: google.visualization is undefined

我该如何解决该错误?我在“SO”中搜索了解决方案,他们让我添加这一行:

google.load('可视化', '1.0', {'packages':['corechart'], 'callback': read});

通过添加这个也得到同样的错误。有人可以帮我解决这个问题吗?

最佳答案

这里有一些建议...

1) 推荐使用 loader.js与旧库相比 jsapi

<script src="https://www.gstatic.com/charts/loader.js"></script>

2) 命名 callback函数,而不是分配给变量

google.charts.load('current', {
  callback: read,
  packages:['table']
});

function read(){...}

3) 必须在 addRows 之前添加列,有几种方法可以做到这一点,使用 arrayToDataTable很容易

var datae = google.visualization.arrayToDataTable([
  ['datetime', 'jobId', 'userId', 'status', 'jobType'],
]);

4) 在 data1 , "jobstatus"是一个数组,所以必须使用数组元素索引来访问值

jobs.jobstatus[0].dateAndTime // get first array element with [0]

--或--

如果有多个jobstatus在数组中,使用循环将它们全部添加,使用 addRow

jobs.jobstatus.forEach(function (job) {
  datae.addRow([
    job.dateAndTime,
    job.jobId,
    job.userId,
    job.status,
    job.jobType
  ]);
});

请参阅以下工作片段...

google.charts.load('current', {
  callback: read,
  packages:['table']
});

function read(){
  var data1={
    "jobstatus": [{
      "dateAndTime": "hi",
      "jobId": "TCC_tfc",
      "userId": "admin",
      "status": "Completed",
      "jobType": "Excel Upload"
    }]
  };
  var jobs = data1;

  var datae = google.visualization.arrayToDataTable([
    ['datetime', 'jobId', 'userId', 'status', 'jobType'],
  ]);

  jobs.jobstatus.forEach(function (job) {
    datae.addRow([
      job.dateAndTime,
      job.jobId,
      job.userId,
      job.status,
      job.jobType
    ]);
  });

  var chart = new google.visualization.Table(document.getElementById('chart_div'));
  chart.draw(datae);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

关于javascript - 将 json 数据插入 Google SpreadSheet 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074956/

相关文章:

javascript - Chrome 应用 : How to save blob content to fileSystem in the background?

c# - 从 ASP.NET Controller 返回动态 jsonobject

javascript - 截至上周,Google 文档邮件合并脚本无法正常工作

javascript - 如何在回答特定的 Google 表单项目时发送批准人电子邮件

javascript - 悬停在另一个 div 上时显示和隐藏按钮

javascript - 存储/生成 <select> 选项以供以后使用?

javascript - 从 JSON 对象中删除 $ - 可能吗?

php - MySQL针对数据表的优化和查询优化

google-sheets - 如何在 Google 表格中特定列的输入上添加和突出显示行

javascript - 使用 HTML、CSS 和 JavaScript 增加圆弧效果