【发布时间】:2015-03-14 13:57:57
【问题描述】:
我正在构建一个 Chrome 扩展程序,它应该将新行写入 Google 电子表格。我设法阅读了工作表内容,但无法再写一行。目前我的错误是“400(错误请求)”。知道我在这里做错了什么吗?
我在这里查看了Google Sheets API documentation 和其他发布的问题,但找不到任何解决方案。
这是我用来获取工作表内容的代码(有效):
function loadSpreadsheet(token) {
var y = new XMLHttpRequest();
y.open('GET', 'https://spreadsheets.google.com/feeds/list/spreadsheet_id/default/private/values?access_token=' + token);
y.onload = function() {
console.log(y.response);
};
y.send();
}
这是我尝试发布新行的代码(给我“400 - 错误请求”):
function appendRow(token){
function constructAtomXML(foo){
var atom = ["<?xml version='1.0' encoding='UTF-8'?>",
'<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">',//'--END_OF_PART\r\n',
'<gsx:name>',foo,'</gsx:name>',//'--END_OF_PART\r\n',
'</entry>'].join('');
return atom;
};
var params = {
'body': constructAtomXML("foo")
};
url = 'https://spreadsheets.google.com/feeds/list/spreadsheet_id/default/private/full?alt=json&access_token=' + token;
var z = new XMLHttpRequest();
z.open("POST", url, true);
z.setRequestHeader("Content-type", "application/atom+xml");
z.setRequestHeader("GData-Version", "3.0");
z.setRequestHeader("Authorization", 'Bearer '+ token);
z.onreadystatechange = function() {//Call a function when the state changes.
if(z.readyState == 4 && z.status == 200) {
alert(z.responseText);
}
}
z.send(params);
}
注意:spreadsheet_id 是我实际工作表 ID 的占位符。
【问题讨论】:
-
表示在该网址找不到电子表格。确保您拥有正确的 URL,并且电子表格的所有者没有删除它。
-
URL 与有效的 GET 请求完全相同。所以电子表格id绝对是正确的,电子表格存在并且用户具有访问权限。但是可能设置的网址不正确?
标签: ajax google-chrome-extension xmlhttprequest google-spreadsheet-api