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...
Brak komentarzy:
Prześlij komentarz