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

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

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

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

谢谢。

【问题讨论】:

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

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


【解决方案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 库已准备好使用。

这是你需要做的。

  1. thishttps://cloud.google.com/console#/project下创建一个谷歌云项目。请耐心等待,这需要一些时间。
  2. 在“Registered Apps”下,不要删除“Service Account - Project”
  3. 在“Registered Apps”下,注册一个新应用,选择平台网络应用。
  4. 在“API”下,选择“Drive API”。
  5. 在新创建的应用程序中,将您的 chrome 应用程序 url(如 chrome-extension://)粘贴为“web origin”
  6. 从第 3 步中创建的应用的 OAuth 2.0 客户端 ID 中复制“客户端 ID”
  7. gsloader 库添加到您的html 页面中。它需要require.jsjs-logger 和jQuery。如果您不能使用 requirejs,请告诉我,我将尝试通过删除 requirejs 依赖项来创建库,尽管这可能需要更多时间。
  8. 以下是一些代码 sn-p。
    // 做授权
    var clientId = "<your client id>";
    GSLoader.setClientId(clientId);

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多