W przykładzie poniżej Perl pobiera dane z arkusza
Google Docs,
i zapisuje je do pliku tymczasowego. Następnie TeX -- uruchomiony
,,z wnętrza'' skryptu -- formatuje ww. dane
(układ graficzny jest zdefiniowany w stylach
(por. \input brasskoncert.sty
):
use Net::Google::Spreadsheets; use Getopt::Long; use Encode qw(encode); my $STitle = 'Konkurs_Brass'; # nazwa arkusza do pobrania my $pdftexprogname = 'pdfmex'; # nazwa programu uruchamiającego TeXa my $outputname = "tmp__.tex"; # nazwa pliku tmp my $pdfintermode = "-interaction=nonstopmode"; # lepsze niż "-interaction=batchmode"; GetOptions( 't=s' => \$title,); ## nazwy kolumn w arkuszu: my @Cols = ('nazwisko', 'kraj', 'instrument', 'srednia'); my $service = Net::Google::Spreadsheets->new( username => '???', password => '???' ); my @spreadsheets = $service->spreadsheets(); my $spr_title = $service->spreadsheet( { title => "$STitle" }); my $worksheet = $spr_title->worksheet( { title => 'sheet1' }); my @rows = $worksheet->rows; open (OUT, ">$outputname") || die "Nie mogę otworzyć $outputname.tex!\n\n"; print OUT "\\input brasskoncert.sty\n\\HEAD{$title}\n"; for $r (@rows ) { $rc = $r->content; print OUT "\\Row"; for $t (@Cols ) { print OUT "{", encode("iso-8859-2", ${$rc}{$t}), "}"; } print OUT "\n"; } print OUT "\\TAIL \\bye\n"; close (OUT); my @run_pdftex = ($pdftexprogname, $pdfintermode, $outputname); system ( @run_pdftex ) == 0 || die "Cuś nie tak\n" ; ##
Być może da się prościej, bez Net::Google::Spreadsheets
a poprzez LWP...