12

Zrobiłem kilka badań i z jakiegoś powodu nie mogę znaleźć dobrego przykładu pokazującego to gdziekolwiek, i zaczynam się zastanawiać, czy to nawet możliwe.Rozszerzenie Chrome Pisanie do arkusza kalkulacyjnego Google

Co mam zamiar zrobić, to zapisać dane w arkuszu kalkulacyjnym Google, aby arkusz był używany jako baza danych.

Czy ktoś ma jakąkolwiek dokumentację, którą mógłbym wykonać? Biorąc pod uwagę, że interfejs API arkusza kalkulacyjnego nie obsługuje JavaScript, jest to możliwe?

Dzięki.

+2

Zbyt szeroki? wtf, jest tak naprawdę tylko jeden nie-hackowy sposób (OAUTH, żądania xml do ich API) –

+2

To zdecydowanie nie jest zbyt szerokie i potrzebuję tej odpowiedzi. –

Odpowiedz

5

Myślę, że macie takie samo pytanie, które miałem kilka miesięcy temu. Szukałem jakiejś biblioteki, która mogłaby zrobić to samo, ale nie mogłem go znaleźć, więc w końcu utworzyłem jeden o nazwie gsloader. Używam tej biblioteki w tym rozszerzeniu chrome jiraProgressTracker. Rozszerzenie Chrome jest w trakcie opracowywania, ale biblioteka gsloader jest gotowa do użycia.

Oto, co musisz zrobić.

  1. Utwórz projekt chmury google pod numerem this, https://cloud.google.com/console#/project. Bądź cierpliwy, zajmie to trochę czasu.
  2. Pod "Zarejestrowanymi aplikacjami", nie usuwaj "Konto usługi - Projekt".
  3. W "Zarejestrowanych aplikacjach" zarejestruj nową aplikację, wybierz aplikację internetową na platformie.
  4. W sekcji "Interfejsy API" wybierz "Drive API".
  5. W nowo utworzonej aplikacji, wklej adres URL aplikacji Chrome (jak chrome-extension: //) dla "pochodzenia internetowej"
  6. Kopiuj "id" z klienta OAuth 2.0 ID klienta z aplikacji utworzonego w kroku 3
  7. Dodaj gsloader biblioteka na twoją stronę html. Wymaga require.js i js-logger oraz jQuery. Jeśli nie możesz użyć wymagającego programu requirejs, proszę daj mi znać. Postaram się utworzyć bibliotekę, usuwając zależność od elementu requirejs, ale może to zająć więcej czasu.
  8. Poniżej znajduje się fragment kodu, który można wykorzystać.
    // Do autoryzacji
    var clientId = "<your client id>";
    GSLoader.setClientId(clientId);

    // Załaduj istniejący arkusz
    GSLoader.loadSpreadsheet("spreadsheet id");

    // Utwórz arkusz
    GSLoader.createSpreadsheet("spreadsheet id")

    Istnieje wystarczająco dużo metod i obiektów dostępnych do pracy, a nie wspominając wszystko tutaj postaram się udostępnić dokumentację.

Proszę dać mi znać, jak to działa z ogółem.

7

Tak, jest to zdecydowanie możliwe. Korzystałem z interfejsu API Spreadsheet w szerokim zakresie przy użyciu Javascript. Będziesz musiał użyć wersji protokołu API, zgodnie z dokumentacją: https://developers.google.com/google-apps/spreadsheets/

Wymaga to wysłania podpisanych żądań przy użyciu OAuth2 (starsze protokoły auth nie są już wiarygodne.) więc sugeruję użycie biblioteki OAuth2, takiej jak JSO. https://github.com/andreassolberg/jso

Podczas pisania twojego javascript będziesz musiał napisać funkcje, które tworzą łańcuch XML do interfejsu z API protokołu. Parsowanie odpowiedzi jest dość proste. Dodałem fragment kodu, którego użyłem. Możesz również zobaczyć moją odpowiedź na pokrewne pytanie za pomocą 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

jak udało Ci się zaimportować https://apis.google.com/js/client.js? – noogui

Powiązane problemy