Добавление расширений 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")
Есть достаточно методов и объектов, доступных для работы, вместо того, чтобы упоминать все здесь, я попытаюсь сделать доступную документацию.
Пожалуйста, дайте мне знать, как это работает с вами в целом.