Chrome 扩展写入谷歌电子表格 [关闭]

Posted

技术标签:

【中文标题】Chrome 扩展写入谷歌电子表格 [关闭]【英文标题】:Chrome Extension Writing to Google Spreadsheet [closed] 【发布时间】:2013-12-25 08:54:02 【问题描述】:

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

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

有没有人有我可以跟进的文档?考虑到电子表格 API 似乎不允许 javascript,这可能吗?

谢谢。

【问题讨论】:

太宽泛了? wtf,实际上只有 1 种非 hacky 方式(OAUTH,对其 API 的 xml 请求) 这绝对不是太宽泛,我非常需要这个答案。 投票重新开放,这是google chrome扩展和google电子表格的关键字组合的***google搜索 【参考方案1】:

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

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

在编写 javascript 时,您需要编写创建 XML 字符串以与协议 API 交互的函数。解析响应非常简单。我已经包含了我使用过的代码的 sn-p。您还可以在此处使用 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

【讨论】:

你是怎么导入apis.google.com/js/client.js的? 函数 sendSignedRequest 的作用是什么?我有一个有效的 oAuth,但我想在某个工作表中插入一行。我找不到任何代码【参考方案2】:

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

这是你需要做的。

    在this、https://cloud.google.com/console#/project下创建一个谷歌云项目。请耐心等待,这需要一些时间。 在“Registered Apps”下,不要删除“Service Account - Project”。 在“Registered Apps”下,注册一个新应用,选择平台网络应用。 在“API”下,选择“Drive API”。 在新创建的应用程序中,将您的 chrome 应用程序 url(如 chrome-extension://)粘贴为“web origin” 从第 3 步中创建的应用的 OAuth 2.0 客户端 ID 中复制“客户端 ID” 将gsloader 库添加到您的html 页面中。它需要require.js 和js-logger 和jQuery。如果您不能使用 requirejs,请告诉我,我将尝试通过删除 requirejs 依赖项来创建库,尽管这可能需要更多时间。

    以下是一些代码 sn-p。 // 做授权var clientId = "<your client id>"; GSLoader.setClientId(clientId);

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

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

    有足够多的方法和对象可供使用,这里不一一列举,我会尽量提供文档。

请告诉我,它对您的整体效果如何。

【讨论】:

以上是关于Chrome 扩展写入谷歌电子表格 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法从谷歌电子表格中读取

使用谷歌应用脚​​本从电子表格数据中检索行

谷歌电子表格脚本 - 保护工作表的权限

如何在 Chrome 扩展程序中以编程方式关闭 gmail 撰写对话框

写入电子表格时强制使用 Google Apps 脚本中的小数位

根据谷歌电子表格中的行和列条件计算值