是否有人知道如何使用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());
});
}