是否有人知道如何使用google api javascript客户端成功地请求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());
    });
  });
}

警报接着说:
({错误:{错误:[{域:“FusionTables”,原因:“BadImportInPutEmpty”,
消息:“content is empty。”}),代码:400,消息:“content is
空的。”})
很明显我的进口是空的。我的语法应该是什么?我在fusiontables文档中读到csv数据应该在请求主体部分中指定,但是我不知道如何使用gapi javascript库来实现这一点。

最佳答案

对于那些感兴趣的人。以下是执行此操作的方法:

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

09-26 10:16