Skip to content

Instantly share code, notes, and snippets.

@poiriersimon
Last active August 26, 2020 14:53
Show Gist options
  • Save poiriersimon/772067eafd0fd57d8fd38c7a80ccd428 to your computer and use it in GitHub Desktop.
Save poiriersimon/772067eafd0fd57d8fd38c7a80ccd428 to your computer and use it in GitHub Desktop.
Get Teams Channels Analytics to CSV file
#This is a quick and dirty way to dump all the last 90 days analytics of a Team to a CSV file
#Requirement :
#-Install-module MicrosoftTeams
#-Get your bearer token and replace it in the variable
$UPN = "user@domain.com"
$TeamDisplayName = "My Team To Analyse"
$bearer ="Bearer ESAsadmaisjdoasjdoaskdokasopdkasopdjaiopjdd very long bearer token"
###########
$headers = @{
"Authorization" = $Bearer
"Content-Type" = "application/json"
}
Connect-MicrosoftTeams
$Groupid = (Get-Team -User $UPN |where{$_.displayname -eq $TeamDisplayName}).GroupID
$Channels = Get-TeamChannel -GroupId $GroupID
$ChannelsStats = @()
foreach($Channel in $Channels){
$URL = "https://teams.microsoft.com/tas/prod/v2/teams/$($Groupid)/channels/$($Channel.Id)/summary-timeseries?metrics=all&timeperiod=last-ninety-days&includeTimeseries=postMessages,replyMessages,mentions,reactions,meetingsOrganized"
$Reply = Invoke-WebRequest -Method get -UseDefaultCredentials -Uri $URL -Headers $headers
$Data = ConvertFrom-Json $Reply.Content
$ChannelStat = New-Object PSObject
$ChannelStat | Add-Member NoteProperty -Name "Channel" -Value $Channel.DisplayName
$ChannelStat | Add-Member NoteProperty -Name "replyMessages" -Value $Data.channels.metrics.replyMessages.value
$ChannelStat | Add-Member NoteProperty -Name "LastreplyMessages" -Value $Data.channels.metrics.replyMessages.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "postMessages" -Value $Data.channels.metrics.postMessages.value
$ChannelStat | Add-Member NoteProperty -Name "LastpostMessages" -Value $Data.channels.metrics.postMessages.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "meetingsOrganized" -Value $Data.channels.metrics.meetingsOrganized.value
$ChannelStat | Add-Member NoteProperty -Name "LastmeetingsOrganized" -Value $Data.channels.metrics.meetingsOrganized.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "activeUsers" -Value $Data.channels.metrics.activeUsers.value
$ChannelStat | Add-Member NoteProperty -Name "LastactiveUsers" -Value $Data.channels.metrics.activeUsers.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "channelMessages" -Value $Data.channels.metrics.channelMessages.value
$ChannelStat | Add-Member NoteProperty -Name "LastchannelMessages" -Value $Data.channels.metrics.channelMessages.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "reactions" -Value $Data.channels.metrics.reactions.value
$ChannelStat | Add-Member NoteProperty -Name "Lastreactions" -Value $Data.channels.metrics.reactions.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelStat | Add-Member NoteProperty -Name "mentions" -Value $Data.channels.metrics.mentions.value
$ChannelStat | Add-Member NoteProperty -Name "Lastmentions" -Value $Data.channels.metrics.mentions.timeSeries | sort -Descending date | where {$_.value -gt 0} |select -First 1
$ChannelsStats += $ChannelStat
}
$ChannelsStats | Export-csv .\"$($TeamDisplayName)-Analytics-$(Get-date -Format yyyy-MM-dd).csv" -NoTypeInformation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment