【问题标题】:Error While Inserting json data into Google SpreadSheet将 json 数据插入 Google 电子表格时出错
【发布时间】:2016-08-22 08:45:58
【问题描述】:

我正在尝试将 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 未定义

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

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

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

【问题讨论】:

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


    【解决方案1】:

    这里有一些建议......

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

    &lt;script src="https://www.gstatic.com/charts/loader.js"&gt;&lt;/script&gt;

    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
      ]);
    });
    

    请参阅以下工作 sn-p...

    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>

    【讨论】:

    • 这个问题好运吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多