我想仅使用 JavaScript 访问 Google 电子表格(没有 .NET、C#、Java 等)
我来到这里,很震惊地知道没有用于 JavaScript 的 API 来访问 Google 表格。
请告诉我如何使用 JavaScript 或其任何框架(如 jQuery)访问(创建/编辑/删除)Google 表格。
我想仅使用 JavaScript 访问 Google 电子表格(没有 .NET、C#、Java 等)
我来到这里,很震惊地知道没有用于 JavaScript 的 API 来访问 Google 表格。
请告诉我如何使用 JavaScript 或其任何框架(如 jQuery)访问(创建/编辑/删除)Google 表格。
我创建了一个简单的 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 应用程序使用其客户端库,所以我在下面添加了它。
现在是Mar 2017,这里的大多数答案都已经过时了——现在接受的答案是指使用旧 API 版本的库。一个更新的答案:您只能使用 JavaScript访问大多数 Google API 。谷歌今天提供了 2(更正,3)方法来做到这一点:
使用 REST API 时,您需要管理和存储您的源代码以及通过滚动您自己的身份验证代码来执行授权(请参阅上面的示例)。Apps Script 代表您处理此问题,管理数据(减少 Ape-inago 在其回答中提到的“痛苦” ),并且您的代码存储在 Google 的服务器上。但是您的功能仅限于 App Script 提供的服务,而 REST API 为开发人员提供了更广泛的 API 访问权限。但是,嘿,有选择很好,对吧?总之,要回答 OP 原始问题,而不是零,开发人员可以通过三种方式使用 JavaScript 访问 Google 表格。
这是要点。
您可以使用Google Sheets API创建电子表格。目前无法使用 API 删除电子表格(阅读文档)。将 Google Docs API 视为创建和查找文档的途径。
您可以使用基于工作表的提要在电子表格中添加/删除工作表。
可以通过上面提到的 Google 电子表格 API 读取电子表格,或者,仅对于已发布的表格,通过使用Google 可视化 API 查询语言来查询数据(可以以 CSV、JSON 或 HTML 表格格式返回结果)。
忘记 jQuery。只有在遍历 DOM 时,jQuery 才真正有价值。由于 GAS(Google Apps 脚本)不使用 DOM,jQuery 不会为您的代码增加任何价值。坚持香草。
我真的很惊讶没有人在答案中提供这些信息。不仅可以做到,而且使用 vanilla 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 应用程序。
编辑:这是在谷歌文档的 api 发布之前回答的。有关更多最新信息,请参阅Evan Plaice 的回答和Dan Dascalescu 的回答。
它看起来像你可以,但使用起来很痛苦。它涉及使用 Google 数据 API。
http://gdatatips.blogspot.com/2008/12/using-javascript-client-library-w-non.html
“JavaScript 客户端库具有日历、联系人、Blogger 和 Google 财经的辅助方法。但是,您几乎可以将它与任何 Google 数据 API 一起使用,以访问经过身份验证的/私人订阅源。本示例使用 DocList API。”
以及编写与电子表格交互的小工具的示例:http ://code.google.com/apis/spreadsheets/gadgets/
'JavaScript 访问 Google Docs' 实现起来会很乏味,而且 Google 文档也不是那么容易获得。我有一些很好的链接可以分享,您可以通过这些链接实现对 gdoc 的 js 访问:
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 Sheets 电子表格数据:
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>
对于这种类型的事情,您应该使用Google Fusion Tables。API就是为此目的而设计的。