use LWP::UserAgent;
use DBI;
use POSIX;
+use Time::HiRes;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
use utf8;
# TODO:
# - detect moves between groups
+# - make the sheet message more in-your-face (ephemeral message)
require '../include/config.pm';
sub format_cell_names_for_seen {
my $seen = shift;
- my @cells = map { chr(ord('A') + $_->[2]) . $_->[1] } @$seen;
+ my @cells = map { chr(ord('A') + $_->[2]) . ($_->[1] + 1) } @$seen;
return join(', ', @cells);
}
if (!exists($seen_names->{lc $real_name})) {
# TODO: This can somehow come if we try to add someone who's not in the sheet, too?
skv_log("Ønsket å fjerne at $real_name skulle på trening, men de var ikke i regnearket lenger.");
+ } elsif (scalar @{$seen_names->{lc $real_name}} > 1) {
+ # Don't touch them.
} else {
skv_log("Fjerner at $real_name skal på trening.");
push @diffs, [
}
sub run {
+ my $start = [Time::HiRes::gettimeofday];
+
@log = ();
skv_log("Siste sync startet: " . POSIX::ctime(time));
my ($tab_name, $tab_id) = get_spreadsheet_with_title($ua, $token, $wanted_sheet_title);
if (!defined($tab_name)) {
- skv_log("Fant ikke noen fane med “$wanted_sheet_title” i navnet; kan ikke synkronisere.\n");
+ skv_log("Fant ikke noen fane med «$wanted_sheet_title» i navnet; kan ikke synkronisere.\n");
sheet_batch_update($ua, $token, [ serialize_skv_log_to_sheet() ]);
die;
}
for my $diff (@diffs) {
my $real_name = $diff->[0];
- # See if we can find them in the spreadsheet.
my $seen = $seen_names{lc $real_name};
- die if (!defined($seen) || scalar @$seen > 1);
+
+ # We've already complained about these earlier, so just skip them silently.
+ next if (scalar @$seen > 1);
+
+ # See if we can find them in the spreadsheet.
+ die "Could not find $real_name" if (!defined($seen));
my $rowno = $seen->[0][1];
my $colno = $seen->[0][2];
push @yellow_updates, {
push @yellow_updates, serialize_skv_log_to_sheet();
sheet_batch_update($ua, $token, \@yellow_updates);
$dbh->commit;
+
+ my $elapsed = Time::HiRes::tv_interval($start);
+ printf "Tok %.0f ms.\n", 1e3 * $elapsed;
}
if ($#ARGV >= 0 && $ARGV[0] eq '--daemon') {