如何仅使用Javascript访问Google表格电子表格?

Pra*_*tik 95 javascript google-api google-data-api google-api-js-client google-sheets-api

我想只使用JavaScript访问Google Spreadsheets(没有.NET,C#,Java等)

我来到这里并且震惊地知道JavaScript没有用于访问Google表格的API.

请告诉我如何使用JavaScript或其任何框架(如jQuery)访问(创建/编辑/删除)Google表格.

Mik*_*Kay 56

我创建了一个简单的javascript库,通过JSON api检索谷歌电子表格数据(如果它们已发布):

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

你可以在这里看到它:

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

  • Evan Plaice的回答http://stackoverflow.com/a/8666573/42082提供了有关官方Google Docs API以及如何使用电子表格的详细信息.值得一看. (4认同)
  • 这为我节省了大量时间.非常感谢!但是,我决定分叉您的代码,以便能够处理空的数据单元,并将其组织成行(按原样返回的数据只是一个巨大的单元阵列,但由于空单元格不存在考虑到,没有简单的方法来组织数据).更新只是你的'callbackCells()'方法.看看:https://github.com/rw3iss/google-spreadsheet-javascript.git再次感谢man! (3认同)
  • 看起来谷歌改变了政策,现在已经被打破了。 (2认同)

wes*_*cpy 47

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

这是2017年3月,这里的大部分答案已经过时 - 现在接受的答案是指使用较旧的API版本的库.更新的答案:您只能使用JavaScript 访问大多数Google API.Google今天提供了3种方法:

  1. 正如Dan Dascalescu回答中提到的,您可以使用Google Apps脚本,这是Google -in-Google的云解决方案.也就是说,在Google服务器上运行的浏览器之外的非节点服务器端JS应用程序.
  2. 您还可以使用Google API客户端库JavaScript来访问客户端上的最新Google表格REST API.
  3. 使用JavaScript访问Google API的第三种方法是使用其客户端库从Node.js应用程序.它与使用上面描述的JavaScript(客户端)客户端库类似,只是您将从服务器端访问相同的API.这是Sheets 的Node.js快速入门示例.您可能会发现上面基于Python的视频更加有用,因为它们也从服务器端访问API.

使用REST API时,您需要管理和存储源代码,并通过滚动自己的身份验证代码来执行授权(请参阅上面的示例).Apps脚本代表您处理此问题,管理数据(减少Ape-in​​ago在答案中提到的"痛苦" ),并且您的代码存储在Google的服务器上.但是您的功能仅限于App Script提供的服务以及较旧的JS(ES3 +一些ES5功能和Google自定义),而REST API为开发人员提供了更广泛的API访问.但是,嘿,有选择是对的,对吗?总之,要回答OP原始问题而不是零,开发人员有三种使用JavaScript访问Google表格的方法.


Eva*_*ice 35

这是要点.

您可以使用Google表格API创建电子表格.目前无法使用API​​删除电子表格(请参阅文档).将Google Docs API视为创建和查找文档的途径.

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

更新电子表格是通过基于列表的订阅源基于单元格的订阅源完成的.

读取电子表格可通过上面提及的任何谷歌电子表格的API来完成,或者只公布表,通过使用谷歌可视化API查询语言来查询数据(可在CSV,JSON或HTML表格格式返回结果).


忘了jQuery.如果你遍历DOM,jQuery才真正有价值.由于GAS(Google Apps Scripting)不使用DOM,因此jQuery将不会为您的代码添加任何价值.坚持香草.

我真的很惊讶没有人在答案中提供这些信息.它不仅可以完成,而且使用vanilla JS相对容易.唯一的例外是Google Visualization API相对较新(截至2011年).Visualization API也可以通过HTTP查询字符串URI专门工作.


Dan*_*scu 11

2016年更新:最简单的方法是使用Google Apps脚本API,特别是SpreadSheet服务.这适用于私人工作表,与需要发布电子表格的其他答案不同.

这将允许您将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;
}
Run Code Online (Sandbox Code Playgroud)

您还可以将此类脚本发布为Web应用程序.


rob*_*sco 9

有一个解决方案不需要发布电子表格.但是,工作表确实需要"共享".更具体地说,需要以具有链接的任何人可以访问电子表格的方式共享工作表.完成后,可以使用Google表格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
Run Code Online (Sandbox Code Playgroud)

获取工作表元数据

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/?key={yourAPIKey}
Run Code Online (Sandbox Code Playgroud)

获得一系列细胞

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}!{cellRange}?key={yourAPIKey}
Run Code Online (Sandbox Code Playgroud)

现在掌握了这些信息,可以使用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);                                                                                                                                                       
  });                
Run Code Online (Sandbox Code Playgroud)


Ape*_*ago 6

编辑:这是在google doc的api发布之前得到的.请参阅 Evan Plaice的回答 Dan Dascalescu对更多最新信息的回答.

看起来你可以,但这是一个痛苦的使用.它涉及使用Google数据API.

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

"JavaScript客户端库具有日历,联系人,Blogger和Google财经的帮助方法.但是,您可以将它与几乎任何Google Data API一起使用来访问经过身份验证的/私有的Feed.此示例使用DocList API."

以及编写与电子表格接口的小工具的示例:http://code.google.com/apis/spreadsheets/gadgets/