Добавление расширений Chrome в электронную таблицу Google

Я занимаюсь некоторыми исследованиями и по какой-то причине не могу найти хороший пример, демонстрирующий это где угодно, и я начинаю задаваться вопросом, возможно ли это.

То, что я хочу сделать, - это предоставить мои данные о расширении в электронной таблице Google, чтобы лист использовался как база данных.

Есть ли у кого-нибудь документация, через которую я мог бы пройти? Учитывая, что API-интерфейс таблицы, похоже, не позволяет использовать JavaScript, возможно ли это?

БЛАГОДАРЯ.

Ответ 1

Да, это определенно возможно. Я широко использовал API таблиц с помощью Javascript. Вам необходимо использовать версию протокола API, как описано здесь: https://developers.google.com/google-apps/spreadsheets/

Это требует отправки подписанных запросов с использованием OAuth2 (более старые протоколы аутентификации больше не надежны), поэтому я предлагаю использовать библиотеку OAuth2, такую как JSO. https://github.com/andreassolberg/jso

При написании javascript вам нужно написать функции, которые создают XML-строку для взаимодействия с API протокола. Разбор ответов довольно прямолинейный. Я включил фрагмент кода, который я использовал. Вы также можете увидеть мой ответ на соответствующий вопрос, используя JQuery здесь. JQuery.ajax POST для 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
}

Ответ 2

Я думаю, у тебя такой же вопрос, который у меня был несколько месяцев назад. Я искал какую-нибудь библиотеку, чтобы сделать то же самое, но не смог найти ее, поэтому в итоге я создал gsloader. Я использую эту библиотеку в этом jiraProgressTracker chrome extension. Расширение Chrome находится в разработке, но библиотека gsloader готова к использованию.

Вот что вам нужно сделать.

  • Создайте проект облака Google в this, https://cloud.google.com/console#/project. Будьте терпеливы, это займет некоторое время.
  • В разделе "Зарегистрированные приложения" не удалять "Учетная запись службы - проект" .
  • В разделе "Зарегистрированные приложения" зарегистрируйте новое приложение, выберите веб-приложение платформы.
  • В разделе "API" выберите "Drive API".
  • В недавно созданном приложении вставьте URL-адрес приложения chrome (например, chrome-extension://) для "веб-источника"
  • Скопировать "идентификатор клиента" из идентификатора клиента OAuth 2.0 из приложения, созданного на шаге 3
  • Добавьте gsloader в вашу html-страницу. Для этого требуется require.js и js-logger и jQuery. Если вы не можете использовать requirejs, сообщите мне, я попробую создать библиотеку, удалив зависимость requirejs, хотя для этого может потребоваться больше времени.
  • Ниже приведен фрагмент кода. // У авторизации
    var clientId = "<your client id>";
    GSLoader.setClientId(clientId);

    //Загрузка существующей электронной таблицы
    GSLoader.loadSpreadsheet("spreadsheet id");

    //Создание электронной таблицы
    GSLoader.createSpreadsheet("spreadsheet id")

    Есть достаточно методов и объектов, доступных для работы, вместо того, чтобы упоминать все здесь, я попытаюсь сделать доступную документацию.

Пожалуйста, дайте мне знать, как это работает с вами в целом.