如何使用google客户端api(gapi)使用谷歌融合表API的importrows方法

时间:2013-12-27 21:19:47

标签: javascript http google-fusion-tables

有没有人知道如何使用google-api-javascript-client对fusiontables API的importrows方法做成功请求。我有其他请求工作,例如列出某个表的列。所以我很确定身份验证很好。

function makeApiCall() {
    gapi.client.load('fusiontables', 'v1', function() {
          var request = gapi.client.fusiontables.column.list({
            'tableId': tableId
          });
          request.execute(function(resp) {
            alert(resp.totalItems);
          });
        });
      }

这是我用来导入的代码(不起作用)。为清楚起见,我尝试在此只导入一条记录:

function makeApiCallImportRows() {
  gapi.client.load('fusiontables', 'v1', function() {
    var request = gapi.client.fusiontables.table.importRows({
      'tableId': tableId,
      'uploadType' : 'media',
      'resource': {
          'media': {
            'contentType': 'application/octet-stream',
            'data': 'aa,1,ds,01-01-2013'
          }
        }

    });
    request.execute(function(resp) {
    //only in ff:
    alert(resp.toSource());
    });
  });
}

警报然后说:

  

({error:{errors:[{domain:“fusiontables”,reason:“badImportInputEmpty”,   消息:“内容为空。”}],代码:400,消息:“内容为   空的。“}})

显然我的导入是空的。我的语法应该是什么?我在fusiontables文档中读到应该在请求正文部分中指定CSV数据,但我不知道如何使用gapi javascript库。

1 个答案:

答案 0 :(得分:3)

对于那些感兴趣的人。这是做到这一点的方法:

function makeApiCallImportRows() { 
  var request = gapi.client.request({
    'path': '/upload/fusiontables/v1/tables/'+tableId+'/import',
    'method': 'POST',
    'params': {'uploadType': 'media'},
    'headers' : {'Content-Type' : 'application/octet-stream'},
    'body': '9,9,9,2013\n8,8,8,2014\n'
  });
  request.execute(function(resp) {
    alert(resp.toSource());
    });
}