Google Spreadsheet on Rails
Jan Filipowski (Arkency)
13 lipca 2010
Jan Filipowski (Arkency) Google Spreadsheet on Rails
5 Whys
I zmiana wielu pól za jednym kliknięciemI korzystanie z gotowych funkcji GSI przerzucenie UI do GSI ludzie lubią ExcelaI ...
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Przykład 1
Zarządzanie kolekcjami
1. tworzymy worksheet ze wszystkimi obiektami
2. tworzymy worksheet z obiektami kolekcji
3. copy-paste tych obiektów, które chcemy w kolekcji
4. zapisujemy
5. importujemy do naszej appki
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Przykład 2
Masowa edycja atrybutów
1. tworzymy worksheet z obiektami kolekcji
2. edytujemy wszystkie atrybuty, które chcemy
3. zapisujemy
4. importujemy do appki
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Gem
google-spreadsheet-ruby (github)
I autoryzacja login-hasło lub OAuthI tworzenie spreadsheetI dostęp do wszystkich worksheetów przez numerI dostęp do pól - wierszami bądź komórkamiI zapis na żądanie
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Samo mięcho
s e s s i o n = G o o g l e S p r e a d s h e e t . l o g i n ( ” yashke ” , ”kaka ” )
s p r e a d s h e e t = s e s s i o n . s p r e a d s h e e t b y k e y ( ”ew32das321 ” )
ws = s p r e a d s h e e t . w o r k s h e e t s [ 0 ]ws . rows#=> [ [ ” xx ” , ” yy ” ] , [ ” bb ” , ”dd ” ] ]ws [ 2 , 1 ]#=> ”bb”
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Rails Way
model Spreadsheet
I inicjalizacja połączeniaI metoda fill in do wypełniania worksheetówI metoda get ids do wczytywania kolekcjiI metoda get objects do wczytywania pełnych obiektów kolekcji
Jan Filipowski (Arkency) Google Spreadsheet on Rails
fill in
d e f f i l l i n ( ws name , c o l l e c t i o n , h e a d e r s )ws = g e t w o r k s h e e t ( ws name )h e a d e r s . e a c h w i t h i n d e x do | h e a d e r p a i r , i |
ws [ 1 , i +1] = h e a d e r p a i r [ 1 ]endc o l l e c t i o n . e a c h w i t h i n d e x do | member , i n d e x |
h e a d e r s . e a c h w i t h i n d e x do | h e a d e r p a i r , i |ws [ i n d e x + 2 , i +1] = member . send (
h e a d e r p a i r [ 0 ] )end
endws . s a v e
end
Jan Filipowski (Arkency) Google Spreadsheet on Rails
get ids
d e f g e t i d s ( ws name )ws = g e t w o r k s h e e t ( ws name )ws . rows . map{ | x | x [ 0 ] }
end
Jan Filipowski (Arkency) Google Spreadsheet on Rails
get objects
d e f g e t o b j e c t s ( ws name , k l a s s , s e t t e r s )ws = g e t w o r k s h e e t ( ws name )ws . rows . map do | row |
o b j = k l a s s . f i n d ( row [ 0 ] )s e t t e r s . e a c h w i t h i n d e x do | s e t t e r , i n d e x |
o b j . send ( s e t t e r . to sym , row [ i n d e x + 1 ] )endo b j
endend
Jan Filipowski (Arkency) Google Spreadsheet on Rails
Dziękuję
Kontakttwitter: @janfilipowskiflaker: @januemail: [email protected]
Jan Filipowski (Arkency) Google Spreadsheet on Rails