@@ -97,6 +97,11 @@ function New-GSCalendarEvent {
97
97
98
98
This is useful for copying another events ExtendedProperties over when creating a new event.
99
99
100
+ . PARAMETER CreateMeetEvent
101
+ Create a Google Meet conference event while creating the calendar event.
102
+
103
+ This is useful for creating a Google Meet URL which you can send to people for video conferences.
104
+
100
105
. EXAMPLE
101
106
New-GSCalendarEvent "Go to the gym" -StartDate (Get-Date "21:00:00") -EndDate (Get-Date "22:00:00")
102
107
@@ -109,76 +114,84 @@ function New-GSCalendarEvent {
109
114
[cmdletbinding (DefaultParameterSetName = " AttendeeEmails" )]
110
115
Param
111
116
(
112
- [parameter (Mandatory = $true , Position = 0 )]
117
+ [parameter (Mandatory , Position = 0 )]
113
118
[String ]
114
119
$Summary ,
115
- [parameter (Mandatory = $false )]
120
+ [parameter ()]
116
121
[String ]
117
122
$Description ,
118
- [parameter (Mandatory = $false )]
119
- [ValidateScript ({if ($_ -match ' ^[0-9a-v]+$' ){$true }else {throw " The characters allowed in the ID are only those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9" }})]
123
+ [parameter ()]
124
+ [ValidateScript ( { if ($_ -match ' ^[0-9a-v]+$' ) {
125
+ $true
126
+ }
127
+ else {
128
+ throw " The characters allowed in the ID are only those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9"
129
+ } })]
120
130
[ValidateLength (5 , 1024 )]
121
131
[String ]
122
132
$Id ,
123
- [parameter (Mandatory = $false , ValueFromPipelineByPropertyName = $true )]
133
+ [parameter (ValueFromPipelineByPropertyName )]
124
134
[Alias (" PrimaryEmail" , " UserKey" , " Mail" )]
125
135
[ValidateNotNullOrEmpty ()]
126
136
[String []]
127
137
$User = $Script :PSGSuite.AdminEmail ,
128
- [parameter (Mandatory = $false , ValueFromPipelineByPropertyName = $true )]
138
+ [parameter (ValueFromPipelineByPropertyName )]
129
139
[String []]
130
140
$CalendarID = " primary" ,
131
- [parameter (Mandatory = $false , ParameterSetName = " AttendeeEmails" )]
141
+ [parameter (ParameterSetName = " AttendeeEmails" )]
132
142
[String []]
133
143
$AttendeeEmails ,
134
- [parameter (Mandatory = $false , ParameterSetName = " AttendeeObjects" )]
144
+ [parameter (ParameterSetName = " AttendeeObjects" )]
135
145
[Google.Apis.Calendar.v3.Data.EventAttendee []]
136
146
$Attendees ,
137
- [parameter (Mandatory = $false )]
147
+ [parameter ()]
138
148
[String ]
139
149
$Location ,
140
- [parameter (Mandatory = $false )]
150
+ [parameter ()]
141
151
[ValidateSet (' default' , ' public' , ' private' , ' confidential' )]
142
152
[String ]
143
153
$Visibility ,
144
- [parameter (Mandatory = $false )]
154
+ [parameter ()]
145
155
[ValidateSet (" Periwinkle" , " Seafoam" , " Lavender" , " Coral" , " Goldenrod" , " Beige" , " Cyan" , " Grey" , " Blue" , " Green" , " Red" )]
146
156
[String ]
147
157
$EventColor ,
148
158
[parameter ()]
149
159
[Google.Apis.Calendar.v3.Data.EventReminder []]
150
160
$Reminders ,
151
- [parameter (Mandatory = $false )]
161
+ [parameter ()]
152
162
[Alias (' DisableReminder' )]
153
163
[Switch ]
154
164
$DisableDefaultReminder ,
155
- [parameter (Mandatory = $false )]
165
+ [parameter ()]
156
166
[DateTime ]
157
167
$LocalStartDateTime = (Get-Date ),
158
- [parameter (Mandatory = $false )]
168
+ [parameter ()]
159
169
[DateTime ]
160
170
$LocalEndDateTime = (Get-Date ).AddMinutes(30 ),
161
- [parameter (Mandatory = $false )]
171
+ [parameter ()]
162
172
[String ]
163
173
$StartDate ,
164
- [parameter (Mandatory = $false )]
174
+ [parameter ()]
165
175
[String ]
166
176
$EndDate ,
167
- [parameter (Mandatory = $false )]
177
+ [parameter ()]
168
178
[String ]
169
179
$UTCStartDateTime ,
170
- [parameter (Mandatory = $false )]
180
+ [parameter ()]
171
181
[String ]
172
182
$UTCEndDateTime ,
173
- [parameter (Mandatory = $false )]
183
+ [parameter ()]
174
184
[Hashtable ]
175
185
$PrivateExtendedProperties ,
176
- [parameter (Mandatory = $false )]
186
+ [parameter ()]
177
187
[Hashtable ]
178
188
$SharedExtendedProperties ,
179
- [parameter (Mandatory = $false )]
189
+ [parameter ()]
180
190
[Google.Apis.Calendar.v3.Data.Event + ExtendedPropertiesData ]
181
- $ExtendedProperties
191
+ $ExtendedProperties ,
192
+ [parameter ()]
193
+ [switch ]
194
+ $CreateMeetEvent
182
195
)
183
196
Begin {
184
197
$colorHash = @ {
@@ -229,7 +242,7 @@ function New-GSCalendarEvent {
229
242
if (-not $ExtendedProperties ) {
230
243
$ExtendedProperties = New-Object ' Google.Apis.Calendar.v3.Data.Event+ExtendedPropertiesData' - Property @ {
231
244
Private__ = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
232
- Shared = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
245
+ Shared = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
233
246
}
234
247
}
235
248
elseif (-not $ExtendedProperties.Private__ ) {
@@ -243,7 +256,7 @@ function New-GSCalendarEvent {
243
256
if (-not $ExtendedProperties ) {
244
257
$ExtendedProperties = New-Object ' Google.Apis.Calendar.v3.Data.Event+ExtendedPropertiesData' - Property @ {
245
258
Private__ = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
246
- Shared = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
259
+ Shared = (New-Object ' System.Collections.Generic.Dictionary[string,string]' )
247
260
}
248
261
}
249
262
elseif (-not $ExtendedProperties.Shared ) {
@@ -308,9 +321,21 @@ function New-GSCalendarEvent {
308
321
DateTime = $LocalEndDateTime
309
322
}
310
323
}
324
+ $verbMsg = $null
325
+ if ($CreateMeetEvent ) {
326
+ $createRequest = New-Object ' Google.Apis.Calendar.v3.Data.CreateConferenceRequest'
327
+ $createRequest.RequestId = (New-Guid ).ToString(' n' )
328
+ $confData = New-Object ' Google.Apis.Calendar.v3.Data.ConferenceData'
329
+ $confData.CreateRequest = $createRequest
330
+ $body.ConferenceData = $confData
331
+ $verbMsg = ' with Meet conferencing'
332
+ }
311
333
foreach ($calId in $CalendarID ) {
312
- Write-Verbose " Creating Calendar Event '$ ( $Summary ) ' on calendar '$calId ' for user '$U '"
334
+ Write-Verbose " Creating Calendar Event '$ ( $Summary ) '$ ( $verbMsg ) on calendar '$calId ' for user '$U '"
313
335
$request = $service.Events.Insert ($body , $calId )
336
+ if ($CreateMeetEvent ) {
337
+ $request.ConferenceDataVersion = 1
338
+ }
314
339
$request.Execute () | Add-Member - MemberType NoteProperty - Name ' User' - Value $U - PassThru | Add-Member - MemberType NoteProperty - Name ' CalendarId' - Value $calId - PassThru
315
340
}
316
341
}
0 commit comments