我如何才能访问谷歌工作表电子表格只与 Javascript?

我想访问谷歌电子表格只使用 JavaScript (没有.NET,C # ,Java 等)

我来到 给你,惊讶地发现没有任何 API 可以让 JavaScript 访问 GoogleSheets。

请告诉我如何使用 JavaScript 或其他框架(如 jQuery)访问(CREATE/EDIT/DELETE) Google Sheets。

182712 次浏览

对不起,这个答案很糟糕。显然,这已经是一个近两年的 问题,所以不要屏住呼吸。

这是官方的要求,你可以 “明星”

可能最接近的方法是使用您自己的 JS 库公开 使用 Google App Engine/Python 推出自己的服务和您需要的任何子集。虽然我自己也想有个更好的解决办法。

编辑: 这个问题在 google doc 的 API 发布之前就有了答案 资料。

看起来你可以,但是使用起来很麻烦,它涉及到使用 Google 的数据 API。

http://gdatatips.blogspot.com/2008/12/using-javascript-client-library-w-non.html

”JavaScript 客户端库具有用于 Calendar、 Contacts、 Blogger 和 GoogleFinance 的 helper 方法。但是,您可以将它与几乎所有的 Google Data API 一起使用,以访问经过身份验证的/私有的提要。此示例使用 DocList API。”

and an example of writing a gadget that interfaces with spreadsheets: http://code.google.com/apis/spreadsheets/gadgets/

“ JavaScript 访问 GoogleDocs”实现起来会很乏味,而且 Google 文档也不是那么容易得到的。我有一些好的链接可以分享,你可以通过这些链接访问 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

也许这些能帮到你。

我已经创建了一个简单的 javascript 库,可以通过 JSON api 检索 google 电子表格数据(如果发布的话) :

Https://github.com/mikeymckay/google-spreadsheet-javascript

你可以在这里看到它的运作:

Http://mikeymckay.github.com/google-spreadsheet-javascript/sample.html

对于这种类型的东西,你应该使用 谷歌融合表空气污染指数就是为此而设计的。

这是要点。

可以使用 Google Sheets API创建电子表格。目前还没有办法使用 API 删除电子表格(阅读文档)。可以将 GoogleDocsAPI 看作是创建和查找文档的路径。

您可以使用 基于工作表的提要在电子表格中添加/删除工作表。

更新电子表格是通过 基于列表的提要以细胞为基础的饲料完成的。

阅读电子表格可以通过上面提到的 Google 电子表格 API 或者 只适用于已发表的文件来完成,使用 谷歌可视化 API 查询语言查询数据(它可以返回 CSV、 JSON 或 HTML 表格格式的结果)。


别管 jQuery 了。JQuery 只有在遍历 DOM 时才真正有价值。由于 GAS (GoogleAppsScripting)不使用 DOMjQuery,因此它不会为您的代码增加任何价值。还是香草味的吧。

我真的很惊讶,还没有人在答复中提供这一信息。不仅 can这样做,而且相对容易做到使用香草 JS。唯一的例外是 Google 可视化 API,这是相对较新的(截至2011年)。可视化 API 还通过 HTTP 查询字符串 URI 独占地工作。

在这个瞬息万变的世界上,这些联系大多已经过时。

Now you can use < strong > Google Drive Web API :

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 = activeSheet.getActiveCell().getRow();
var email = activeSheet.getRange(activeRow, 3).getValue();


return email;
}

You can also 发布这样的脚本作为网络应用程序.

您可以使用 Sheetse.js和 tabletop.js 来完成

  1. 来自 git 的例子
  2. 另一个例子

2018年1月更新 : 当我去年回答这个问题时,我没有提到使用 JavaScript 访问 Google API 的 第三方法,那就是使用 它的客户端库访问 Node.js 应用程序,所以我在下面添加了它。

它是 二零一七年三月 ,这里的大多数答案都已经过时了——现在公认的答案指的是使用旧版 API 的库。一个更新的答案是: 只能使用 JavaScript 访问 most Google APIs。今天,谷歌提供了两种(更正,3)方法来做到这一点:

  1. 正如在 作者: Dan Dascalescu中提到的,您可以使用 谷歌应用程序脚本,这是一个 JavaScript-in-Google 的云解决方案。也就是说,在 Google 服务器上运行的浏览器之外的非节点服务器端 JS 应用程序。
  1. 您还可以使用 Google APIs Client Library for JavaScript访问客户端的最新 Google Sheets REST API
  • 下面是使用客户端库的 一些普通的样品
  • 最新的 Sheets API (v4)是2016年 Google I/O 大会上的 释放; 它比以前的所有版本都要强大得多,让开发人员可以通过编程访问 Sheets UI 中的大多数特性
  • 下面是用于 API 的 JavaScript 快速启动,它可以帮助您入门
  • 下面是用于核心 API 请求的 样本「食谱」(JSON 有效负载)
  • 如果你对 Python 不“过敏”(如果你是,就假装它是伪代码;) ,我制作了几个视频,里面有更多“现实世界”的例子,关于如何使用 API,你可以从中学习,如果需要的话可以迁移到 JS (注意: 即使是 Python 代码,大多数 API 请求都有 JSON 并且很容易移植到 JS) :
    1. 将 SQL 数据迁移到钣 (代码深潜 邮寄)
    2. 使用 Sheets API 格式化文本(代码深潜 邮寄)
    3. 从电子表格数据 生成幻灯片(代码深潜 邮寄)
    4. 这些和其他在 Sheets API video library
  1. 使用 JavaScript 访问 GoogleAPI 的第三种方法是从服务器端的 Node.js 客户端库。它的工作原理类似于使用上面描述的 JavaScript (客户机)客户机库,只不过您将从服务器端访问相同的 API。这里是 the Node.js Quickstart example的床单。您可能会发现上面的基于 Python 的视频更有用,因为它们也可以从服务器端访问 API。

在使用 REST API 时,您需要管理和存储您的源代码,并通过滚动您自己的授权代码执行授权(参见上面的示例)。Apps Script 代表您处理这个问题,管理数据(减少 他们的回答中 Ape-inago 提到的“痛苦”) ,并且您的代码存储在 Google 的服务器上。但是您的功能仅限于 App Script 提供的服务,而 REST API 为开发人员提供了更广泛的访问 API 的途径。但是,有选择总是好的,不是吗?总之,为了回答 OP 最初的问题,开发人员使用了使用 JavaScript 访问 GoogleSheets 的 方法,而不是0。

There's a solution that does not require one to publish the spreadsheet. However, the sheet does need to be 'Shared'. More specifically, one needs to share the sheet in a manner where anyone with the link can access the spreadsheet. Once this is done, one can use the Google Sheets HTTP API.

首先,你需要一个 Google API 密钥: Https://developers.google.com/places/web-service/get-api-key 注意。请注意将一个 API 密钥提供给公众的安全后果: < a href = “ https://Support.google.com/googleapi/answer/6310037”rel = “ norefrer”> 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 中操作它。我建议使用 公理

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

你可以使用 RGraph 工作表连接器在 JavaScript 中阅读 Google Sheets 电子表格数据:

Https://www.rgraph.net/canvas/docs/import-data-from-google-sheets.html

最初(几年前)这依赖于一些 RGraph 函数来发挥它的魔力-但现在它可以工作 独立的(即不需要 RGraph 公共库)。

Some example code (this example makes an RGraph chart):

<!-- 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>