my $json = shift;
my %assignments = ();
- my $rows = $json->{'sheets'}[0]{'data'}[0]{'rowData'};
+ my $rows = $json->{'data'}[0]{'rowData'};
my @curr_groups = ();
for my $row (@$rows) {
my $col = 0;
my $json = shift;
my %seen_names = ();
- my $rows = $json->{'sheets'}[0]{'data'}[0]{'rowData'};
+ my $rows = $json->{'data'}[0]{'rowData'};
my $rowno = 3;
for my $row (@$rows) {
my $colno = 0;
delete $colors{$userid};
}
- # Get the list of all people in the sheet (we're going to need them soon anyway).
+ # Get the list of all people in the sheet (we're going to need them soon).
+ # Also get the Slack mapping when we're doing an API request anyway.
my $start = [Time::HiRes::gettimeofday];
- my $response = $ua->get('https://sheets.googleapis.com/v4/spreadsheets/' . $config::sheet_id . '?key=' . $config::gsheets_api_key . '&ranges=' . $tab_name . '!A4:Z5000&fields=sheets/data/rowData/values/userEnteredValue',
+ my $response = $ua->get('https://sheets.googleapis.com/v4/spreadsheets/' . $config::sheet_id . '?key=' . $config::gsheets_api_key . '&ranges=' . $tab_name . '!A4:Z5000&ranges=Slack-mapping!A5:C5000&fields=sheets/data/rowData/values/userEnteredValue',
Authorization => 'Bearer ' . $token,
Accept_Encoding => HTTP::Message::decodable
);
- log_timing($start, "/spreadsheets/$tab_name");
+ log_timing($start, "/spreadsheets/");
- my $main_sheet_json = JSON::XS::decode_json($response->decoded_content);
+ my $sheets_json = JSON::XS::decode_json($response->decoded_content);
+ my $main_sheet_json = $sheets_json->{'sheets'}[0];
+ my $mapping_sheet_json = $sheets_json->{'sheets'}[1];
# Update the list of groups we've seen people in.
my %assignments = get_group_assignments($main_sheet_json);
my %slack_userid_to_slack_name = ();
my %slack_userid_to_row = ();
- $start = [Time::HiRes::gettimeofday];
- $response = $ua->get('https://sheets.googleapis.com/v4/spreadsheets/' . $config::sheet_id . '?key=' . $config::gsheets_api_key . '&ranges=Slack-mapping!A5:C5000&fields=sheets/data/rowData/values/userEnteredValue',
- Authorization => 'Bearer ' . $token,
- Accept_Encoding => HTTP::Message::decodable
- );
- log_timing($start, "/spreadsheets/Slack-mapping");
- my $mapping_sheet_json = JSON::XS::decode_json($response->decoded_content);
- my $mapping_sheet_rows = $mapping_sheet_json->{'sheets'}[0]{'data'}[0]{'rowData'};
+ my $mapping_sheet_rows = $mapping_sheet_json->{'data'}[0]{'rowData'};
my $cur_row = 5;
for my $row (@$mapping_sheet_rows) {
my $slack_id = $row->{'values'}[0]{'userEnteredValue'}{'stringValue'};
} else {
# Do a search through all the available names in the sheet to find an obvious(ish) match.
my @candidates = ();
- my $main_sheet_rows = $main_sheet_json->{'sheets'}[0]{'data'}[0]{'rowData'};
+ my $main_sheet_rows = $main_sheet_json->{'data'}[0]{'rowData'};
for my $row (@$main_sheet_rows) {
for my $val (@{$row->{'values'}}) {
my $name = get_spreadsheet_name($val);
# Find the list of names to mark yellow.
my %want_colors = ();
- my $main_sheet_rows = $main_sheet_json->{'sheets'}[0]{'data'}[0]{'rowData'};
+ my $main_sheet_rows = $main_sheet_json->{'data'}[0]{'rowData'};
for my $userid (@attending_userids) {
next if (!exists($slack_userid_to_real_name{$userid}));
my $slack_name = $slack_userid_to_slack_name{$userid};