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

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

我正在尝试将JSON数据插入Google Spreadsheet。这是我的代码,

<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未定义


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

google.load('visualization', '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 - 将鼠标悬停在动画中的 HTML-5 Canvas 图像上以播放/暂停它

javascript - 从数据库中获取数据并将其呈现到backbone.js中的表中

javascript - DOM 对象优于其他 DOM 对象

javascript - 在 jQuery AJAX 后输出中读取 JSON 数据

javascript - 是否可以将 js 变量发送到谷歌表格? (不是表格数据)

javascript - WEBPACK - 我如何需要原型(prototype)函数?

python - 是否需要关闭json.load中的文件?

java - 如何从此字符串创建JSONArray?

javascript - 比较不同的表格并清除匹配的单元格

xpath - Google 表格 - 在特定页面上导入 XML 时遇到问题