我只想使用JavaScript来访问Google Spreadsheets(不能使用.NET,C#,Java等)
我来到这里时,很震惊地得知没有JavaScript API可以访问Google表格。
请告诉我如何使用JavaScript或其任何框架(如jQuery)访问(创建/编辑/删除)Google表格。
我只想使用JavaScript来访问Google Spreadsheets(不能使用.NET,C#,Java等)
我来到这里时,很震惊地得知没有JavaScript API可以访问Google表格。
请告诉我如何使用JavaScript或其任何框架(如jQuery)访问(创建/编辑/删除)Google表格。
Answers:
我创建了一个简单的JavaScript库,该库通过JSON API检索Google电子表格数据(如果已发布):
https://github.com/mikeymckay/google-spreadsheet-javascript
您可以在此处查看其运行情况:
http://mikeymckay.github.com/google-spreadsheet-javascript/sample.html
2018年1月更新:去年我回答这个问题时,我没有提及使用JavaScript来访问Google API 的第三种方法,这是通过使用客户端库的Node.js应用程序进行的,因此在下面添加了它。
这是2017年3月,和大部分的答案在这里已经过时-接受的答案,现在指的是使用旧的API版本的库。最新的答案:您只能使用JavaScript 访问大多数Google API。Google提供了3种方法来做到这一点:
使用REST API时,您需要管理和存储源代码,以及通过滚动自己的身份验证代码来执行授权(请参见上面的示例)。Apps Script代表您处理此问题,管理数据(减少Ape-inago在其答案中提到的“痛苦” ),并将您的代码存储在Google的服务器上。但是您的功能仅限于App Script提供的服务,而REST API使开发人员可以更广泛地访问API。但是嘿,有选择是件好事吧?总之,要回答OP的原始问题(而不是零),开发人员可以使用三种方法来使用JavaScript访问Google表格。
这是要点。
您可以使用Google Sheets API创建电子表格。当前无法使用API删除电子表格(请阅读文档)。将Google Docs API视为创建和查找文档的途径。
您可以使用基于工作表的Feed在电子表格中添加/删除工作表。
可以通过上面提到的Google Spreadsheets API来读取电子表格,或者仅对于已发布的表格,可以使用Google Visualization API查询语言来查询数据(可以以CSV,JSON或HTML表格格式返回结果)。
忘了jQuery。jQuery只有在遍历DOM时才真正有价值。由于GAS(Google Apps Scripting)不使用DOM,因此jQuery不会为您的代码增加任何价值。坚持香草。
我真的很惊讶,没有人提供答案中的信息。不仅可以做到,而且使用香草JS相对容易。唯一的例外是Google Visualization API,它相对较新(截至2011年)。可视化API还专门通过HTTP查询字符串URI起作用。
有一种解决方案不需要发布电子表格。但是,工作表确实需要“共享”。更具体地说,需要以一种方式来共享工作表,以便任何具有链接的人都可以访问电子表格。完成此操作后,即可使用Google Sheets HTTP API。
首先,您需要一个Google API密钥。前往这里:https: //developers.google.com/places/web-service/get-api-key NB。请注意向公众提供API密钥的安全后果:https://support.google.com/googleapi/answer/6310037
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}
现在有了这些信息,就可以使用AJAX检索数据,然后在JavaScript中进行操作。我建议使用axios。
var url = "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}&includeGridData=true";
axios.get(url)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
2016年更新:最简单的方法是使用Google Apps Script API,尤其是SpreadSheet Service。这适用于私人工作表,这与需要发布电子表格的其他答案不同。
这样,您就可以将JavaScript代码绑定到Google表格,并在打开该表格或选择菜单项(可以定义)时执行该代码。
这是一个快速入门/演示。代码如下:
// Let's say you have a sheet of First, Last, email and you want to return the email of the
// row the user has placed the cursor on.
function getActiveEmail() {
var activeSheet = SpreadsheetApp.getActiveSheet();
var activeRow = .getActiveCell().getRow();
var email = activeSheet.getRange(activeRow, 3).getValue();
return email;
}
您也可以将脚本发布为Web应用程序。
编辑:这是在发布Google文档的api之前得到的答复。有关最新信息,请参见 Evan Plaice的答案和 Dan Dascalescu的答案。
看起来好像可以,但是使用起来很痛苦。它涉及使用Google数据API。
http://gdatatips.blogspot.com/2008/12/using-javascript-client-library-w-non.html
“ JavaScript客户端库具有用于Calendar,Contacts,Blogger和Google Finance的帮助程序方法。但是,您几乎可以将其与任何Google Data API一起使用,以访问经过身份验证的/专用Feed。此示例使用DocList API。”
以及编写与电子表格连接的小工具的示例:http : //code.google.com/apis/spreadsheets/gadgets/
“ JavaScript访问Google文档”的实现非常繁琐,此外,获取Google文档也不是那么简单。我分享了一些不错的链接,通过这些链接您可以实现js对gdoc的访问:
http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#UploadingDocs
http://code.google.com/apis/spreadsheets/gadgets/
http://code.google.com/apis/gdata/docs/js.html
http://www.mail-archive.com/google-help-dataapi@googlegroups.com/msg01924.html
也许这些可以帮助您。
抱歉,这是一个糟糕的答案。显然,这一直是一个问题,近两年来,所以不要屏住呼吸。
这是您可以“加星标”的官方要求
可能最接近的是使用Google App Engine / Python滚动您自己的服务,并使用自己的JS库公开所需的任何子集。虽然我希望自己有一个更好的解决方案。
您可以使用Sheetsee.js和tabletop.js做到这一点
您可以使用RGraph表格连接器以JavaScript读取Google表格电子表格数据:
https://www.rgraph.net/canvas/docs/import-data-from-google-sheets.html
最初(几年前),它依靠一些RGraph函数来发挥其魔力-但现在它可以独立运行(即不需要RGraph公共库)。
一些示例代码(此示例制作了RGraph图表):
<!-- Include the sheets library -->
<script src="RGraph.common.sheets.js"></script>
<!-- Include these two RGraph libraries to make the chart -->
<script src="RGraph.common.key.js"></script>
<script src="RGraph.bar.js"></script>
<script>
// Create a new RGraph Sheets object using the spreadsheet's key and
// the callback function that creates the chart. The RGraph.Sheets object is
// passed to the callback function as an argument so it doesn't need to be
// assigned to a variable when it's created
new RGraph.Sheets('1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E', function (sheet)
{
// Get the labels from the spreadsheet by retrieving part of the first row
var labels = sheet.get('A2:A7');
// Use the column headers (ie the names) as the key
var key = sheet.get('B1:E1');
// Get the data from the sheet as the data for the chart
var data = [
sheet.get('B2:E2'), // January
sheet.get('B3:E3'), // February
sheet.get('B4:E4'), // March
sheet.get('B5:E5'), // April
sheet.get('B6:E6'), // May
sheet.get('B7:E7') // June
];
// Create and configure the chart; using the information retrieved above
// from the spreadsheet
var bar = new RGraph.Bar({
id: 'cvs',
data: data,
options: {
backgroundGridVlines: false,
backgroundGridBorder: false,
xaxisLabels: labels,
xaxisLabelsOffsety: 5,
colors: ['#A8E6CF','#DCEDC1','#FFD3B6','#FFAAA5'],
shadow: false,
colorsStroke: 'rgba(0,0,0,0)',
yaxis: false,
marginLeft: 40,
marginBottom: 35,
marginRight: 40,
key: key,
keyBoxed: false,
keyPosition: 'margin',
keyTextSize: 12,
textSize: 12,
textAccessible: false,
axesColor: '#aaa'
}
}).wave();
});
</script>
我正在建立斯坦因来帮助您做到这一点。如果您希望直接从工作表中显示数据,它还提供了仅HTML的解决方案。在steinhq.com上查看。