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 撰写对话框