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

如何仅使用Javascript访问Google Sheet电子表格?,javascript,google-api,google-sheets-api,google-data-api,google-api-js-client,Javascript,Google Api,Google Sheets Api,Google Data Api,Google Api Js Client,我只想使用JavaScript访问Google电子表格(没有.NET、C#、Java等) 我来到这里,得知JavaScript没有API来访问Google表单,我感到震惊 请告诉我如何使用JavaScript或其任何框架(如jQuery)访问(创建/编辑/删除)Google工作表。对不起,这是一个糟糕的答案。显然,这已经是近两年来的一次失败,所以不要屏住呼吸 这是你可以提出的正式要求 可能最接近的方法是使用自己的JS库公开所需的任何子集。虽然我想自己有一个更好的解决方案 编辑:这是在谷歌文档的a

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

我来到这里,得知JavaScript没有API来访问Google表单,我感到震惊


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

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

这是你可以提出的正式要求

可能最接近的方法是使用自己的JS库公开所需的任何子集。虽然我想自己有一个更好的解决方案

编辑:这是在谷歌文档的api发布之前回答的。有关最新信息,请参阅和 信息

看起来你可以,但使用起来很痛苦。它涉及到使用谷歌数据API

“JavaScript客户端库具有日历、联系人、博客和Google Finance的助手方法。但是,您可以将其与任何Google Data API一起使用,以访问经过身份验证的/私有的源。此示例使用DocList API。”


还有一个编写与电子表格接口的小工具的例子:

'JavaScript访问谷歌文档'的实现将非常繁琐,而且谷歌文档也不是那么简单。我有一些很好的链接可供分享,通过这些链接,您可以实现对gdoc的js访问:


这些可能对您有所帮助。

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

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


对于这种类型的东西,您应该使用。该系统就是为此目的而设计的

这里是要点。

可以使用创建电子表格。目前无法使用API删除电子表格(请阅读文档)。可以将GoogleDocsAPI视为创建和查找文档的途径

可以使用添加/删除电子表格中的工作表

通过或更新电子表格

可以通过上面提到的Google电子表格API读取电子表格,或者,仅对于已发布的表格,可以使用来查询数据(可以返回CSV、JSON或HTML表格格式的结果)


忘记jQuery吧。只有在遍历DOM时,jQuery才真正有价值。由于GAS(googleapps脚本)不使用DOM,jQuery不会为代码增加任何价值。坚持香草口味


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

在这个快速变化的世界中,这些链接中的大多数都已过时

现在您可以使用:

  • 和其他人

2016年更新:最简单的方法是使用谷歌应用程序脚本API,尤其是。与其他需要发布电子表格的答案不同,这适用于私人表格

这将允许您将JavaScript代码绑定到Google工作表,并在打开工作表或选择菜单项(您可以定义)时执行它

这是一个例子。代码如下所示:

//假设您有一张第一封、最后一封电子邮件,并且您希望返回
//用户已将光标放置在的行。
函数getActiveEmail(){
var activeSheet=SpreadsheetApp.getActiveSheet();
var activeRow=.getActiveCell().getRow();
var email=activeSheet.getRange(activeRow,3.getValue();
回复邮件;
}
您也可以。

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


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

    现在是2017年3月,这里的大多数答案都过时了——现在公认的答案是指使用旧API版本的库。最新的答案是:您只能使用JavaScript进行访问。今天,谷歌提供了三种方法:

  • 如中所述,您可以在Google的云解决方案中使用JavaScript。也就是说,在谷歌服务器上运行的浏览器之外的非节点服务器端JS应用程序。
    • 您在中为应用程序编写代码,它们可以通过两种不同的方式访问Google工作表:
    • (本机对象支持;);土生土长的更容易,但通常比
    • (直接访问最新的Google Sheets REST API[见下文];)
    • 应用程序脚本也可以启动,您可以使用工作表附加组件(如)扩展工作表UI功能
    • 您甚至可以编写扩展
    • 要了解有关使用应用程序脚本的更多信息,请查看我创建的应用程序(大多数涉及使用工作表)
  • 您还可以使用访问客户端的最新版本。
    • 下面是使用客户机库的示例
    • 最新的API表(v4)在谷歌I/O 2016上发布;它比以前的所有版本都强大得多,使开发人员能够通过编程访问Sheets UI中的大多数功能
    • 下面是帮助您入门的API示例
    • 以下是用于核心API请求的(JSON有效负载)
    • 如果你对Python没有“过敏”(如果你是,就假装它是伪代码;),我制作了几个视频,其中有更多使用API的“真实世界”示例,你可以从中学习,如果需要的话可以迁移到JS(注:即使是Python代码,大多数API请求都有JSON,并且很容易移植到JS):
    • (深潜代码)
    • 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}
      
      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);                                                                                                                                                       
        });                
      
      <!-- 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>