Transcript
Page 1: Google Spreadsheet & Rails

Google Spreadsheet on Rails

Jan Filipowski (Arkency)

13 lipca 2010

Jan Filipowski (Arkency) Google Spreadsheet on Rails

Page 2: Google Spreadsheet & 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

Page 3: Google Spreadsheet & 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

Page 4: Google Spreadsheet & 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

Page 5: Google Spreadsheet & 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

Page 6: Google Spreadsheet & 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

Page 7: Google Spreadsheet & 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

Page 8: Google Spreadsheet & 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

Page 9: Google Spreadsheet & 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

Page 10: Google Spreadsheet & 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

Page 11: Google Spreadsheet & Rails

Dziękuję

Kontakttwitter: @janfilipowskiflaker: @januemail: [email protected]

Jan Filipowski (Arkency) Google Spreadsheet on Rails