Chrome扩展程序写入Google电子表格

时间:2013-12-08 06:04:23

标签: javascript google-chrome-extension google-spreadsheet-api

我一直在做一些研究,由于某些原因无法在任何地方找到一个很好的例子,我开始怀疑它是否有可能。

我要做的是让我的扩展程序在Google电子表格中写入数据,以便将该工作表用作数据库。

有没有人有任何我可以遵循的文件?考虑到Spreadsheet API似乎不允许JavaScript,甚至可能吗?

感谢。

2 个答案:

答案 0 :(得分:11)

是的,这绝对是可能的。我已经使用Javascript广泛使用了Spreadsheet API。您需要使用此处记录的API的协议版本:https://developers.google.com/google-apps/spreadsheets/

这需要使用OAuth2发送已签名的请求(旧的身份验证协议不再可靠。)所以我建议使用像JSO这样的OAuth2库。 https://github.com/andreassolberg/jso

编写javascript时,您需要编写创建XML字符串的函数来与Protocol API进行交互。解析答案非常简单。我已经包含了我使用过的代码片段。您还可以在此处使用JQuery查看我对相关问题的回答。 JQuery .ajax POST to Spreadsheets API?

function appendSpreadsheet(){

 //Constructs the XML string to interface with the Spreadsheet API.
 //This function adds the value of the param foo to the cell in the first empty row in the column called 'columnTitle'. 
 //The Spreadsheet API will return an error if there isn't a column with that title.
 function constructAtomXML(foo){
  var atom = ["<?xml version='1.0' encoding='UTF-8'?>",
          '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">',//'--END_OF_PART\r\n',
          '<gsx:columnTitle>',foo,'</gsx:columnTitle>',//'--END_OF_PART\r\n',
          '</entry>'].join('');
  return atom;
 };

 var params = {
 'method': 'POST',
 'headers': {
   'GData-Version': '3.0',
   'Content-Type': 'application/atom+xml'
 },
 'body': constructAtomXML(foo)
 };

 var docId //Get this from the spreadsheet URL or from the Google Drive API.
 var worksheetId = 'od6'; //The worksheet Id for the first sheet is 'od6' by default.

 url = 'https://spreadsheets.google.com/feeds/list/'+docId+'/'+worksheetId+'/private/full';

 sendSignedRequest(url, handleSuccess, params); //Use your OAuth2 lib
}

答案 1 :(得分:9)

我认为你有几个月前的问题。我正在寻找一些库来做同样但却找不到任何库,所以我最终创建了一个名为gsloader的库。我在此jiraProgressTracker Chrome扩展程序中使用此库。 Chrome扩展程序正在开发中,但gsloader库已准备好使用。

这是你需要做的。

  1. thishttps://cloud.google.com/console#/project下创建一个Google云项目。请耐心等待,这需要一些时间。
  2. 在“已注册的应用”下,不要删除“服务帐户 - 项目”
  3. 在“已注册的应用”下,注册一个新应用,选择平台网络应用。
  4. 在“API”下,选择“云端硬盘API”。
  5. 在新创建的应用中,将Chrome应用网址(如chrome-extension://)粘贴为“网络原点”
  6. 从第3步中创建的应用中的OAuth 2.0客户端ID复制“客户端ID”
  7. gsloader库添加到您的html页面中。它需要require.jsjs-logger以及jQuery。如果你不能使用requirejs,请告诉我,我会尝试通过删除requirejs依赖来创建库,尽管我可能需要更多的时间来完成它。
  8. 以下是一些代码段 //授权
    var clientId = "<your client id>";
    GSLoader.setClientId(clientId);

    //加载现有的电子表格
    GSLoader.loadSpreadsheet("spreadsheet id");

    //创建电子表格
    GSLoader.createSpreadsheet("spreadsheet id")

    有足够的方法和对象可供使用,而不是在这里提及所有我将尝试提供文档。

  9. 请让我知道,它如何与您合作。