12

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

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

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

Спасибо.

+2

слишком широкий? wtf, на самом деле есть только один не-хакерский способ (OAUTH, xml запрашивает их API) –

+2

Это определенно не слишком широк, и я совершенно нуждаюсь в этом ответе. –

ответ

5

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

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

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

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

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

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

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

7

Да, это определенно возможно. Я широко использовал 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 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 
} 
+0

Как вам удалось импортировать https://apis.google.com/js/client.js? – noogui

Смежные вопросы